Simptome
Luați în considerare următorul scenariu:
-
Aveți o bază de date 2012 Microsoft SQL Server care conține opțiunile ALLOW_SNAPSHOT_ISOLATION și READ_COMMITTED_SNAPSHOT activate.
-
Aveți cel puțin trei interogări simultane care rulează împotriva aceluiași tabel.
-
Interogările utilizează sugestia de interogare (TABLOCK, UPDLOCK) .
-
Fiecare interogare este împachetată într-o instrucțiune de începere explicită a unui Tran, dar instrucțiunea Tran nu este executată.
Atunci când prima interogare este săvârșită în acest scenariu, una dintre celelalte interogări va fi în impas. Atunci când READ_COMMITTED_SNAPSHOT este activat împreună cu sugestiile de interogare TABLOCK și UPDLOCK , sesiunile preiau IX încuietori pe tabel. Impasul apare atunci când cele două sesiuni simultane încearcă să convertească încuietorile IX la X Locks în același timp. Dacă READ_COMMITTED_SNAPSHOT este dezactivat, sesiunile vor obține șase blocări care nu se vor bloca atunci când sunt convertite în X Locks. Remedierea rapidă abordează acest comportament prin acordarea LCK_M_SCH_S blocări în loc de blocări IX când READ_COMMITTED_SNAPSHOT este utilizat cu sugestii TABLOCK și UPDLOCK .Notă Această problemă apare și în Microsoft SQL Server 2008 R2. O remediere rapidă pentru SQL Server 2008 R2 va fi lansată în curând.
Rezolvare
Problema a fost remediată pentru prima dată în următoarea actualizare cumulativă de SQL Server.
Actualizarea cumulativă 8 pentru SQL Server 2012 SP1 /en-us/help/2917531
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”.