Objawy
Rozważmy następujący scenariusz w Microsoft SQL Server Compact 3.5:
-
Masz dwie transakcje izolacji serializable.
-
Zarówno transakcji usiłuje wykonać operację DML (kwerendy/DML) dla tej samej tabeli, zawierającą blokowania Wskazówka TABLOCK lub XLOCK Wskazówka blokady.
W tym scenariuszu można napotkać zakleszczenia.
Przyczyna
Ten problem występuje, ponieważ zarówno transakcji czekać na siebie XLOCK. Gdy kwerenda pobiera skompilowany, zarówno transakcji uzyskać udostępnione blokady tabeli i następnie posiada blokadę do izolacji serializable. Gdy obie transakcje usiłuje wykonać execute, kwerendy dla tej samej tabeli, która zawiera Wskazówka blokady XLOCK zarówno transakcji poczekaj do siebie XLOCK. W związku z tym Zakleszczenie występuje.Uwaga Ten problem występuje również w przypadku obu transakcji operację DML dla tej samej tabeli, który zawiera blokowania Wskazówka TABLOCK.
Rozwiązanie
SQL Server Compact 3.5 z dodatkiem Service Pack 2
Poprawkę dotyczącą tego problemu najpierw została wydana w zbiorczej aktualizacji 2. Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 R2 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2289547 Zbiorcza aktualizacja 2 dla programu SQL Server Compact 3.5 z dodatkiem Service Pack 2
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Więcej informacji
Aby uzyskać więcej informacji na temat zakleszczenia odwiedź następującą witrynę Microsoft Developer Network (MSDN):
ZakleszczenieAby uzyskać więcej informacji o DML odwiedź następującą witrynę MSDN:
DMLAby uzyskać więcej informacji dotyczących terminologii aktualizacji oprogramowania, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft