Simptomi
Razmotrite sljedeći scenarij:
-
Imate bazu podataka sustava Microsoft SQL Server 2012 s omogućenim mogućnostima ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT .
-
Imate najmanje tri istodobna upita koji se pokreću u istoj tablici.
-
Upiti koriste podsjetnik za upit (tablock, UPD) .
-
Svaki će se upit zamotati u izričit početak Tranove izjave, no naredba počini Tran se ne izvršava.
Kada se prvi upit počini u ovom scenariju, jedan od drugih upita bit će zatvoren. Kada je READ_COMMITTED_SNAPSHOT omogućen zajedno s savjetima za Tablock i updlock , sesije se u tablici uzimaju IX. Zastoj se pojavljuje kada se dvije istodobne sesije pokušaju pretvoriti u IX brave u X zaključavanje u isto vrijeme. Ako je READ_COMMITTED_SNAPSHOT onemogućeno, sesije će dobiti šest brava koje se neće zatvoriti kada se pretvaraju u X brave. Hitni popravak rješava takvo ponašanje tako da dodijelite LCK_M_SCH_S brave umjesto IX brave kada se READ_COMMITTED_SNAPSHOT koristi uz upute za Tablock i updlock .NapomenaTaj se problem pojavljuje i u programu Microsoft SQL Server 2008 R2. Hitni popravak za SQL Server 2008 R2 uskoro će biti oslobođen.
Rješenje
Problem je prvi put riješen u sljedećem kumulativnom ažuriranju sustava SQL Server.
Kumulativno ažuriranje 8 za SQL Server 2012 SP1 /en-us/help/2917531
Svako novo Kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sve sigurnosne ispravke uključene u prethodno Kumulativno ažuriranje. Pogledajte najnovija kumulativna ažuriranja za SQL Server:
Status
Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".