Symptom
Tänk dig följande situation:
-
Du har en Microsoft SQL Server 2012-databas med alternativen ALLOW_SNAPSHOT_ISOLATION och READ_COMMITTED_SNAPSHOT aktive rad.
-
Du har minst tre samtidiga frågor som körs mot samma tabell.
-
Frågorna använder frågetipset (TABLOCK, UPDLOCK) .
-
Alla frågor är inkapslade i en explicit BEGIN Omdeklaration-instruktion, men commit -instruktionen utförs inte.
När den första frågan bevaras i det här scenariot kommer en av de andra frågorna att död ras. När READ_COMMITTED_SNAPSHOT är aktive rad med TABLOCK -och UPDLOCK -fråge tipsen tar sessionerna i tabellen. Deadlock inträffar när de två samtidiga sessionerna försöker konvertera IX lås till X-lås samtidigt. Om READ_COMMITTED_SNAPSHOT är inaktiverat får sessionerna sex lås som inte kommer att död när de konverteras till X-lås. Snabb korrigeringen åtgärdar detta genom att ge LCK_M_SCH_S lås i stället för IX Lås när READ_COMMITTED_SNAPSHOT används med TABLOCK -och UPDLOCK -tips.Obs! Det här problemet uppstår också i Microsoft SQL Server 2008 R2. En snabb korrigering för SQL Server 2008 R2 släpps snart.
Lösning
Problemet är först åtgärdat i den kumulativa uppdateringen av SQL Server.
Kumulativ uppdatering 8 för SQL Server 2012 SP1 /en-us/help/2917531
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".