Sümptomid
Arvestage järgmise stsenaariumiga.
-
Teil on Microsoft SQL Serveri 2012 andmebaas, millel on lubatud ALLOW_SNAPSHOT_ISOLATION ja READ_COMMITTED_SNAPSHOT suvandid.
-
Teil on vähemalt kolm samaaegset päringut, mis töötavad sama tabeli vastu.
-
Päringud kasutavad päringut (TABLOCK, UPDLOCK) .
-
Iga päring on pakitud selgesõnalisele algusse Trani lausesse, kuid commit TRAN -lauset ei täideta.
Kui esimene päring on selle stsenaariumi korral toime pandud, on mõni muu päring tupik. Kui READ_COMMITTED_SNAPSHOT on lubatud koos TABLOCK ja UPDLOCK päringu vihjetega, võtavad seansid IX-lukud tabelile. Tupik kuvatakse siis, kui kaks samaaegset seanssi proovivad teisendada IX lukkude X-lukud samaks ajaks. Kui READ_COMMITTED_SNAPSHOT on keelatud, saavad seansid kuus lukku, mis ei tupik, kui need teisendatakse X-lukuks. Selle probleemi lahendamiseks võite LCK_M_SCH_S lukustada IX lukkude asemel, kui READ_COMMITTED_SNAPSHOT kasutatakse koos TABLOCK ja UPDLOCK vihjetega.Märkus.See probleem ilmneb ka Microsoft SQL Server 2008 R2. SQL Server 2008 R2 käigultparandus antakse varsti välja.
Lahendus
Probleem parandati esmakordselt SQL serveri järgmises koondvärskenduses.
Kumulatiivne Update 8 SQL Server 2012 SP1 jaoks /en-us/help/2917531
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Vaadake SQL serveri kumulatiivseid värskendusi.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.