Simptomi
Razmotrite sledeći scenario:
-
Imate Microsoft SQL Server 2012 bazu podataka koja ima omogućene ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT podataka.
-
Imate najmanje tri uporedna upita koji se pokreću sa istom tabelom.
-
Upiti koriste podsetnik za upite (TABLOCK, UPDLOCK).
-
Svaki upit je upakovan u eksplicitnu izjavu BEGIN TRAN, ali izjava COMMIT TRAN-a se ne izvršava.
Kada se prvi upit izvrši u ovom scenariju, jedan od ostalih upita će biti ćorsokak. Kada READ_COMMITTED_SNAPSHOT omogućene zajedno sa tabulatorom iUPDLOCK savetima upita, sesije preuzimaju IX brave u tabeli. Do zastoja dolazi kada dve uporedne sesije istovremeno pokušavaju da konvertuju IX brave u X brave u isto vreme. Ako READ_COMMITTED_SNAPSHOT onemogućene, sesije će dobiti SIX brave koje neće biti ćorsokak kada se konvertuju u X brave. Hitna ispravka se odnosi na ovo ponašanje tako što dodeljuje LCK_M_SCH_S zaključavanja umesto IX brava kada se READ_COMMITTED_SNAPSHOT koristi sa TABLOCK i UPDLOCK savetima.Napomena Do ovog problema dolazi i u sistemu Microsoft SQL Server 2008 R2. Hitna ispravka za SQL Server 2008 R2 biće objavljena uskoro.
Rešenje
Problem je prvi put otklonjen u sledećoj kumulativnoj ispravki sistema SQL Server.
Kumulativna ispravka 8 za SQL Server 2012 SP1 /en-us/help/2917531
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".