Dadurch werden alle Datenbanken mit exklusiven Sperren zeigen gehalten werden (die zu der Zeit gehalten transiente diejenigen einschließen kann dies ausgeführt wird), die sys.dm_tran_locks
DMV mit:
select d.*, l.* from sys.dm_tran_locks l
join sys.databases d on l.resource_database_id = d.database_id
where l.request_mode = 'X'
(X = exklusiv, S = Geteilt, IS = Absicht geteilt) Siehe Lock Modes.
Aber wahrscheinlich der beste Weg ist, auf Trace Flags 1204 und 1222 drehen:
Trace Flag 1204 und Trace Flag 1222 Wenn Deadlocks auftreten, Trace-Flag 1204 und Spuren Flagge 1222 Rückkehr Informationen , die ist erfasst im SQL Server 2005 Fehlerprotokoll. Das Ablaufverfolgungsflag 1204 meldet Deadlock-Informationen, die von jedem am Deadlock beteiligten Knoten mit formatiert wurden. Trace Flag 1222 Formate Deadlock Informationen, zuerst von Prozessen und dann von Ressourcen. Es ist möglich, beide Ablaufverfolgungsflags zu aktivieren, um zwei Darstellungen des gleichen Deadlock Ereignisses zu erhalten.
Ref: Detecting and Ending Deadlocks
, auch laufen sp_who2
und sucht nach Einträgen in der BlkBy
(Blocked By) Spalte; Folge diesen bis du an den Kopf der Deadlock-Kette kommst. Das ist die Prozesskennung (oder PID), die verantwortlich ist.
zu bekommen, was SQL hinter einem bestimmten Prozess ausgeführt werden können Sie laufen:
dbcc inputbuffer (@pid)
und verwenden, die PID um den Prozess zu töten (mit Vorsicht und auf eigenes Risiko):
kill @pid
Check out Who is Active? v10.00: DMV Monitoring Made Easy
lesen Sie auch Blocking is not Deadlocking (um die beiden Szenarien zu unterscheiden)
Es ist wirklich nicht nötig, Ihr Thema als erste Zeile Ihrer Frage zu stellen - wir alle lesen es. Außerdem brauchen Sie keine Kappen, es macht es nur schwer zu lesen. – Robert