Symptome
Angenommen, Sie verwenden das Feature AlwaysOn-Verfügbarkeitsgruppen in Microsoft SQL Server 2012, 2014 oder 2016. Jedes Mal, wenn Sie eine Abfrage für eine sekundäre Datenbank ausführen, wird die Abfrage neu kompiliert. Dieses Problem tritt auf, weil die Statistiken nicht ordnungsgemäß vom primären Server an den sekundären Server weitergegeben werden. Wenn Sie die Profiler-Ablaufverfolgung ausführen, finden Sie etwas Ähnliches bei StatMan , was bedeutet, dass SQL Server Statistiken abfragt:
SELECT StatMan([SC0], [SB0000]) FROM (SELECT TOP 100 PERCENT [SC0], step_direction([SC0]) over (order by NULL) AS [SB0000] FROM (SELECT [xxx] AS [SC0] FROM [dbo].[ xxx] TABLESAMPLE SYSTEM (7.033584e-001 PERCENT) WITH (READUNCOMMITTED) ) AS _MS_UPDSTATS_TBL_HELPER ORDER BY [SC0], [SB0000] ) AS _MS_UPDSTATS_TBL OPTION (MAXDOP 1)
Hinweis Wenn Sie die Option Statistiken automatisch aktualisieren oder die Option Statistiken asynchron aktualisieren aktivieren, tritt dieses Problem nicht auf.
Lösung
Das Problem wurde zuerst im folgenden kumulativen Update von SQL Server behoben:
- Kumulatives Update 2 SQL Server 2016 SP1
- Kumulatives Update 4 für SQL Server 2016
- Kumulatives Update 3 für SQL Server 2014 SP2
- Kumulatives Update 8 für SQL Server 2014 SP1
- Kumulatives Update 5 für SQL Server 2012 Service Pack 3 (SP3)
Empfehlung: Installieren Sie das neueste kumulative Update für SQL Server
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Es wird empfohlen, die neuesten kumulativen Updates für SQL Server herunterzuladen und zu installieren:
- Neuestes kumulatives Update für SQL Server 2016
- Neuestes kumulatives Update für SQL Server 2012 SP3
- Neuestes kumulatives Update für SQL Server 2014 SP1/SP2
Referenzmaterial
Informieren Sie sich über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.