Simptomai
Apsvarstykite šį scenarijų:
-
Turite "Microsoft SQL Server" 2012 duomenų bazę, kurioje įgalintos ALLOW_SNAPSHOT_ISOLATION ir READ_COMMITTED_SNAPSHOT parinktys.
-
Turite bent tris lygiagrečias užklausas, kurios vykdomos prieš tą pačią lentelę.
-
Užklausose naudojama (TABLOCK, UPDLOCK) užklausos užuomina.
-
Kiekviena užklausa yra suvyniota į aiškų pradžios transo sakinį, tačiau " COMMIT TRAN " sakinys neįvykdytas .
Kai pirmoji užklausa yra įvykdyta pagal šį scenarijų, viena iš kitų užklausų bus aklavietė. Kai READ_COMMITTED_SNAPSHOT įgalinta kartu su " TABLOCK " ir " UPDLOCK " užklausos užuominomis, seansai turi būti pateikti IX užraktai lentelėje. Iš aklavietės įvyksta, kai du vienu metu vykstančių sesijų bando konvertuoti IX spynos į X spynos tuo pačiu metu. Jei READ_COMMITTED_SNAPSHOT išjungta, SEANSAI gaus šešias užraktus, kurie nebus iš aklavietės, kai konvertuojami į X blokavimus. Karštosios pataisos išsprendžia šią problemą, kai READ_COMMITTED_SNAPSHOT naudojamas su tabuliatoriais ir UPDLOCK užuomLCK_M_SCH_S inomis vietoj IX užraktų.Pastaba. Ši problema taip pat kyla naudojant "Microsoft SQL Server" 2008 R2. "SQL Server 2008 R2" karštosios pataisos bus išleista netrukus.
Sprendimas
Problema pirmą kartą buvo išspręsta šį kaupiamąjį naujinimą SQL serverio.
Kaupiamasis naujinimas 8 SQL serverio 2012 SP1 /en-us/help/2917531
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.