Ich habe eine C# Programm arbeitet mit einer SQL Server-Datenbank auf verschiedenen Client-PCs ausgeführt werden. Jetzt , erhalte ich diese Ausnahme, die [wenn nicht gefangen] meine Anwendung geschlossen:„Deadlock auf Schloss | Kommunikationspuffer Ressourcen“ Ausnahme in C#/SQLSERVER
Transaktion (Prozess-ID ...) wurde am Schloss blockiert | Kommunikations Pufferressourcen mit einem anderen Prozess, und wurden als das Deadlockopfer gewählt. Führen Sie die Transaktion erneut aus.
und der Stack-Trace zeigt, dass die Ausnahme hier passiert:
bei Gui.DB.sqlServerWrapper.MarkAsNonFreshSample (String Barcode, Int32 Devid)
Wo das genannte Verfahren ist dies :
Ich benutze den "Mux" Mutex exklusiven Zugriff auf die SQL-Verbindung " conn "weil mein Programm mehrere Threads hat.
Ich bin nicht eine komplexe Abfrage oder eine lange Transaktion mit (und ich denke, diese kurze Abfrage eine Transaktion, die ein Deadlock nicht dazu führen sollte. Bin ich falsch?).
Wo ist das Problem und wie soll ich es beheben?
* * Entfernen Sie den Mutex und die globale Verbindung. Globale Verbindungen garantieren Deadlocks und können im Fehlerfall nicht wiederhergestellt werden. Verbindungen sollte so wenig Zeit wie möglich –
Können Sie abrufen [die Deadlock Graph] offen bleiben (http://dba.stackexchange.com/questions/10644/deadlock-error-isnt-returning-the-deadlock-sql/10646# 10646) und es in deine Frage aufnehmen? –