Symptom
Tänk dig följande situation:
-
Du kör en procedur i Microsoft SQL Server 2014 eller SQL Server 2012.
-
Proceduren innehåller följande villkor:
-
En tabell uppdateras ofta.
-
Den har en WHERE-sats som innehåller parametrar.
-
Alternativet används (RECOMPILE).
-
-
Den här proceduren körs på flera samtidiga anslutningar med olika uppsättningar parameter värden.
-
Servern är under en kraftig belastning som gör att dessa procedurer tar längre tid än vanligt.
I det här scenariot kan du få felaktiga resultat från proceduren som körs på anslutningen om följande ytterligare villkor uppfylls under det tidsintervall som infaller mellan slutet av en frågetopologi och början av frågekörning på anslutningen:
-
Villkor 1: en annan samtidig anslutning gör uppdateringar till den kopplade tabellen som är tillräckligt stora för att utlösa en ny sammanställning av frågan på din anslutning.
-
Villkor 2: samma fråga har kompilerats om från en annan anslutning och sattes i cache.
Viktigt! Det här är ett ovanligt problem.
Orsak
Det här problemet uppstår eftersom parameter värden för frågan ändras till felaktiga värden när du har kört frågan på din anslutning. Detta inträffar på grund av ett ovanligt ovanligt giltighets problem mellan samtidig kompilering.
Lösning
Problemet är först åtgärdat i den kumulativa uppdateringen av SQL Server.
Kumulativ uppdatering 4 för SQL Server 2014 /en-us/help/2999197
Kumulativ uppdatering 2 för SQL Server 2012 SP2 /en-us/help/2983175
Kumulativ uppdatering 11 för SQL Server 2012 SP1 /en-us/help/2975396
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".