Ich habe eine Monitoring-Anwendung entwickelt. Also habe ich eine Timer-Funktion benutzt, um einige Werte in einer SQL-Tabelle zu überprüfen.
Obwohl es so viele Funktionen gibt, gibt es einen folgenden Fehler für eine Funktion namens getLogEntry ()
%Vor%Dies ist die Implementierung der Funktion
%Vor%Vielen Dank im Voraus
Sie können sich auf diese Frage
Ich verwende das folgende Muster für Datenbankversuche; In diesem Fall geben wir eine DataTable zurück, aber das Muster ist immer gleich. Sie erkennen einen SqlDeadlock oder Timeout basierend auf der SqlException Number , und versuchen Sie es erneut, bis zu einer maximalen Anzahl von n-mal.
%Vor% Ihre Abfrage wurde mit einer anderen Abfrage blockiert. Die andere Abfrage ist höchstwahrscheinlich eine insert
, update
oder delete
Abfrage, da select
allein nicht zum Deadlock neigt.
Wenn Ihnen die Konsistenz nicht so wichtig ist, können Sie den with (nolock)
Hinweis verwenden:
Dies führt dazu, dass Ihre Abfrage keine Sperren platziert. Eine Abfrage ohne Sperren führt nicht zu Deadlocks. Der Nachteil ist, dass es inkonsistente Daten zurückgibt, wenn es gleichzeitig mit einer Modifikationsabfrage ausgeführt wird.
Tags und Links sql sql-server c# deadlock