Gibt es eine Möglichkeit, die gesperrten Tabellen aufzulisten und die Transaktionen zu beenden, wenn sie sofort freigeschaltet werden sollen.
Oder gibt es eine andere Terminologie, die wir für die obige Operation befolgen müssen, nach der ich suche.
Jede Hilfe oder Anleitung wird geschätzt.
Dadurch werden alle Datenbanken angezeigt, in denen exklusive Sperren gehalten werden (einschließlich temporärer, die zum Zeitpunkt der Ausführung gehalten werden). Verwenden Sie dazu die sys.dm_tran_locks
DMV:
(X = exklusiv, S = Freigegeben, IS = Absicht geteilt) Siehe Sperrmodi .
Aber wahrscheinlich ist der beste Weg, Trace Flags 1204 und 1222 zu aktivieren:
Ablaufverfolgungsflag 1204 und Ablaufverfolgungsflag 1222 Wenn Deadlocks auftreten, wird das Ablaufverfolgungsflag 1204 ausgeführt und Verfolgungsflag 1222 gibt Information zurück das wird im SQL Server erfasst 2005 Fehlerprotokoll. Ablaufverfolgungsflag 1204 Berichte Deadlock-Informationen formatiert durch jeden am Deadlock beteiligten Knoten. Ablaufverfolgungsflag 1222 formatiert Deadlock Informationen, zuerst nach Prozessen und dann von Ressourcen. Es ist möglich zu Aktivieren Sie beide Ablaufverfolgungsflags, um zwei zu erhalten Darstellungen des gleichen Deadlocks Ereignis.
Hinweis: Erkennen und Beenden von Deadlocks
Führen Sie auch sp_who2
aus und suchen Sie nach Einträgen in der Spalte BlkBy
(Blocked By); Folge diesen bis du an den Kopf der Deadlock-Kette kommst. Das ist die Prozesskennung (oder PID) verantwortlich.
Um herauszufinden, was SQL hinter einem bestimmten Prozess läuft, können Sie Folgendes ausführen:
%Vor%und verwenden Sie diese PID, um den Prozess (mit Vorsicht und auf eigene Gefahr) zu beenden:
%Vor%Auschecken Wer ist aktiv? v10.00: DMV-Überwachung leicht gemacht
Lesen Sie auch Blockieren ist kein Deadlocking ( um die zwei Szenarien zu unterscheiden)
Tags und Links sql-server locking row