Príznaky
Zoberme si nasledujúcu situáciu:
-
Máte databázu, ktorá obsahuje možnosti ALLOW_SNAPSHOT_ISOLATION a READ_COMMITTED_SNAPSHOT povolená v Microsoft SQL Server 2008 R2.
-
Spustíte príkaz Select , ktorý obsahuje TABLOCK a UPDLOCK tipy na tabuľku v databáze.
-
Príkaz Select je zabalený v explicitnej begin Tran, ale commit Tran sa nespustí.
-
Dve ďalšie rovnaké dotazy spustené s tými istými tipmi na dotaz sa nachádzajú v explicitnej transakcii.
V tomto scenári, keď je prvý dotaz spáchaný, bude jedným z ostatných dotazov zablokovania.
Príčina
Problém sa vyskytuje, pretože SQL Server nesprávne vykazuje zablokovanie v niektorom z nasledujúcich situácií:
-
Keď je pre databázu povolená ALLOW_SNAPSHOT_ISOLATION a READ_COMMITTED_SNAPSHOT , viacnásobné dotazy na tú istú transakciu sa môžu hlásiť ako nesprávne zablokované po dokončení niektorého z nich.
-
Keď je ALLOW_SNAPSHOT_ISOTION zapnutá a používajú sa Rady TABLOCK a UPDLOCK , druhý a tretí príkaz Select majú IX zámky s úmyslom konvertovať na X. Pri pokuse o konverziu na X sa ukončí zablokovanie IX zámkov.
-
Keď je ALLOW_SNAPSHOT_ISOLATION vypnutá, druhý a tretí dotaz získa šesť zámkov. V tejto situácii, keď je šesť zámkov skonvertované na X, ide len o blokovanie scenára, nie na zablokovanie.
Riešenie
Tento problém bol najskôr vyriešený v nasledujúcej kumulatívnej aktualizácii SQL servera. Po použití tejto rýchlej opravy SQL Server vyrieši problém nahrávaním, ak sa v databáze a dotaze vyskytne pomôcka na prečítanie alebo NOLOCK . Táto informácia sa používa na výber správneho typu zámkov na správne zvládnutie situácie namiesto nesprávneho zablokovania zostavy.
Kumulatívna aktualizácia 11 pre SQL Server 2008 R2 SP2 /en-us/help/2926028
Každá nová Kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.