Príznaky
Predpokladajme, že v Microsoft SQL Server Compact 3,5 je tento scenár:
-
Máte dve transakcie s serializáciou serializácie.
-
Obidve transakcie sa snažia vykonať operáciu DML (Query/DML) v tej istej tabuľke, ktorá obsahuje pomôcku na uzamknutie TABLOCK alebo pomôcku na uzamknutie XLOCK.
V tomto scenári sa stretnete s zablokovaním.
Príčina
Tento problém sa vyskytuje, pretože obe transakcie čakať navzájom pre XLOCK. Keď sa dotaz zostaví, obidve transakcie získajú zdieľaný zámok v tabuľke a potom zadržia zámok na serializáciu izolácie. Pri pokuse oboch transakcií o vykonanie vykoná dotaz v tej istej tabuľke, ktorá obsahuje pomôcku na uzamknutie XLOCK, a potom obe transakcie pri XLOCK čakajú na jeden iný. Preto nastane zablokovanie.Poznámka: Tento problém sa vyskytuje aj vtedy, keď obe transakcie vykonávajú operáciu DML v tej istej tabuľke, ktorá obsahuje pomôcku na uzamknutie TABLOCK.
Riešenie
SQL Server Compact 3,5 Service Pack 2
Oprava tohto problému bola prvýkrát vydaná v kumulatívnej aktualizácii 2. Ďalšie informácie o možnostiach získania tohto balíka kumulatívnych aktualizácií pre SQL Server 2008 R2 nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:
2289547 Kumulatívna aktualizácia 2 pre SQL Server Compact 3,5 Service Pack 2
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.
Ďalšie informácie
Ďalšie informácie o zablokovaní nájdete na nasledujúcej webovej lokalite webovej lokality Microsoft Developer Network (MSDN):
ZablokovanieĎalšie informácie o DML, navštívte nasledujúcu webovú lokalitu MSDN:
DMLĎalšie informácie o terminológii aktualizácie softvéru nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:
824684 Popis štandardnej terminológie, ktorá sa používa na popis aktualizácií softvéru od spoločnosti Microsoft