Problembeschreibung
In Microsoft SQL Server Compact 3,5 wird Folgendes Szenario berücksichtigt:
-
Sie haben zwei Transaktionen mit serialisierbarer Isolierung.
-
Beide Transaktionen versuchen, einen DML-Vorgang (Abfrage/DML) für dieselbe Tabelle auszuführen, die einen TABLOCK-Sperrhinweis oder einen xlock-Sperrhinweis enthält.
In diesem Szenario tritt ein Deadlock auf.
Ursache
Dieses Problem tritt auf, weil beide Transaktionen für xlock auf einander warten. Wenn die Abfrage kompiliert wird, erhalten beide Transaktionen die freigegebene Sperre für die Tabelle und dann die Sperre für die serialisierbare Isolierung. Wenn beide Transaktionen versuchen, eine Execute, die Abfrage für dieselbe Tabelle, die einen xlock-Sperrhinweis enthält, auszuführen, warten beide Transaktionen auf einander für xlock. Daher tritt ein Deadlock auf.HinweisDieses Problem tritt auch auf, wenn beide Transaktionen einen DML-Vorgang für dieselbe Tabelle ausführen, die einen TABLOCK-Sperrhinweis enthält.
Fehlerbehebung
SQL Server Compact 3,5 Service Pack 2
Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 2 veröffentlicht. Wenn Sie weitere Informationen zum beziehen dieses kumulativen Updatepakets für SQL Server 2008 R2 benötigen, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2289547 Kumulatives Update 2 für SQL Server Compact 3,5 Service Pack 2
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Weitere Informationen
Weitere Informationen zum Deadlock finden Sie auf der folgenden Website des Microsoft Developer Network (MSDN):
FührtWeitere Informationen zu DML finden Sie auf der folgenden MSDN-Website:
DMLWeitere Informationen zur Terminologie für Softwareupdates von Microsoft finden Sie im folgenden Artikel der Microsoft Knowledge Base:
824684 Beschreibung der Standardterminologie, die zum Beschreiben von Microsoft-Softwareupdates verwendet wird