Simptome
Luați în considerare următorul scenariu:
-
Aveți o bază de date care conține opțiunile ALLOW_SNAPSHOT_ISOLATION și READ_COMMITTED_SNAPSHOT activate în Microsoft SQL Server 2008 R2.
-
Să ruleze o instrucțiune Select care conține TABLOCK și UPDLOCK indicii față de un tabel din baza de date.
-
Instrucțiunea Select este încadrată într-un Tran Beginexplicit, dar nu este executat Tran .
-
Două mai multe dintre aceleași interogări care sunt începute cu aceleași indicii de interogare se află în tranzacția explicită.
În acest scenariu, când se comite prima interogare, una dintre celelalte interogări va fi impas.
Cauză
Problema apare deoarece SQL Server raportează incorect impasul într-unul dintre următoarele scenarii:
-
Atunci când ALLOW_SNAPSHOT_ISOLATION și READ_COMMITTED_SNAPSHOT sunt activate pentru o bază de date, mai multe interogări împotriva aceleiași tranzacții pot fi raportate ca blocate incorect atunci când unul dintre ele este finalizat.
-
Atunci când este activată ALLOW_SNAPSHOT_ISOTION și se utilizează indiciile TABLOCK și UPDLOCK , a doua și a treia instrucțiune Select Take IX Locks cu intenția de a efectua conversia la X. Încuietorile IX ajung în impas atunci când se face o încercare de conversie la X.
-
Atunci când ALLOW_SNAPSHOT_ISOLATION este dezactivat, a doua și a treia interogare va obține o blocare șase. În această situație, când blocarea șase este transformată în X, acesta este doar un scenariu de blocare, nu un impas.
Rezolvare
Problema a fost remediată pentru prima dată în următoarea actualizare cumulativă de SQL Server. După ce aplicați remedierea rapidă, SQL Server rezolvă problema prin înregistrare dacă este întâmpinată o sugestie citire sau un indiciu de blocare pentru baza de date și interogarea. Aceste informații se utilizează pentru a selecta tipul corect de blocări pentru a gestiona situația corect, în loc să raportați incorect impasul.
Actualizarea cumulativă 11 pentru SQL Server 2008 R2 SP2 /en-us/help/2926028
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.