Simptomi
Razmotrite sljedeći scenarij:
-
Imate bazu podataka s mogućnostima ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT omogućenima u programu Microsoft SQL Server 2008 R2.
-
Možete pokrenuti naredbu Select koja sadrži prijedloge Tabulocka i updulocka prema tablici u bazi podataka.
-
Naredba Select zamotana je u eksplicitan početak Trana, ali nije izvršeno izvršenje Tran -a.
-
Još dva ista upita koji su pokrenuto s istim savjetima za upite nalaze se u eksplicitnoj transakciji.
U ovom scenariju kada se prvi upit počini, jedan od drugih upita bit će prazan.
Uzrok
Problem se pojavljuje jer SQL poslužitelj neispravno izvještava o zastoju u jednom od sljedećih scenarija:
-
Kada su ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT omogućeni za bazu podataka, veći broj upita s istom transakcijom može se prijaviti kao neispravno zaključan kada je jedan od njih dovršen.
-
Kada je ALLOW_SNAPSHOT_ISOTION omogućen i koristi se Savjeti Tablock i updlock , druga i treća naredba Select uzimaju IX brave s namjerom da se pretvori u X. IX zaključavanje završava u zastoju kada je stvoren pokušaj pretvaranja u X.
-
Kada ALLOW_SNAPSHOT_ISOLATION Onemogući, drugi i treći upiti dobit će šest brava. U ovom slučaju, kada se šest brava pretvori u X, to je samo scenarij blokiranja, a ne zastoj.
Rješenje
Problem je prvi put riješen u sljedećem kumulativnom ažuriranju sustava SQL Server. Kada primijenite hitni popravak, SQL Server rješava problem snimkom ako je za bazu podataka i upit pronađen podsjetnik za čitanje ili nolock . Te se informacije koriste za odabir ispravne vrste brava za pravilno rukovanje situacijom, a ne neispravno izvješće o zastoju.
Kumulativno ažuriranje 11 za SQL Server 2008 R2 SP2 /en-us/help/2926028
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".