KB3181444 – RETTELSE: Forespørgsler, der kører mod sekundære databaser, kompileres altid igen i SQL Server

Gælder for
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

Symptomer

Antag, at du bruger funktionen AlwaysOn-tilgængelighedsgrupper i Microsoft SQL Server 2012, 2014 eller 2016. Hver gang du udfører en forespørgsel i forhold til en sekundær database, kompileres forespørgslen igen. Dette problem opstår, fordi statistikker ikke overføres korrekt fra den primære server til den sekundære server. Hvis du kører profiler-sporingen, vil du finde noget lignende med følgende om StatMan , hvilket betyder, at SQL-serveren forespørger om statistik:

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) MED (READUNCOMMMITTED) ) SOM _MS_UPDSTATS_TBL_HELPER ORDRE AF [SC0], [SB0000] ) SOM _MS_UPDSTATS_TBL OPTION (MAXDOP 1)

Bemærk! Hvis du deaktiverer indstillingen Automatisk opdatering af statistik eller aktiverer indstillingen Automatisk opdatering af statistik asynkront, forekommer dette problem ikke.

Løsning

Problemet blev først rettet i følgende kumulative opdatering af SQL Server:

Anbefaling: Installér den seneste kumulative opdatering til SQL Server

Hver ny kumulativ opdatering til SQL Server indeholder alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med den forrige kumulative opdatering. Vi anbefaler, at du downloader og installerer de seneste kumulative opdateringer til SQL Server:

Referencer

Få mere at vide om den terminologi, som Microsoft bruger til at beskrive softwareopdateringer.