Esto mostrará todas las bases de datos con bloqueos exclusivos retenidos (que pueden incluir los transitorios mantenidos en el momento presente se ejecuta), utilizando el sys.dm_tran_locks
DMV:
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 = exclusivo, S = compartida, IS = Intención compartida) Ver Lock Modes.
Pero, probablemente, la mejor manera es para encender Indicadores de traza 1204 y 1222:
indicador de traza 1204 y la marca de seguimiento 1222 Cuando se producen estancamientos, el indicador de traza 1204 y indicador de traza 1222 información de la declaración que es capturado en el SQL Server 2005 error log. El indicador de traza 1204 informa la información de interbloqueo formateada por cada nodo involucrado en el interbloqueo. Indicador de traza 1222 formatos de interbloqueo información, primero por procesos y luego por recursos. Es posible habilitar ambas banderas de traza para obtener dos representaciones del mismo evento de interbloqueo .
Ref: Detecting and Ending Deadlocks
Además, ejecute sp_who2
y buscar entradas en (bloqueado por) la columna de la BlkBy
; sigue estos hasta llegar a la cabeza de la cadena de interbloqueo. Ese es el identificador del proceso (o PID) responsable.
para conseguir lo SQL se ejecuta detrás de un proceso específico puede ejecutar:
dbcc inputbuffer (@pid)
y utilizar ese PID para matar el proceso (con prudencia y bajo su propio riesgo):
kill @pid
echa un vistazo a Who is Active? v10.00: DMV Monitoring Made Easy
lea también Blocking is not Deadlocking (para distinguir los dos escenarios)
Realmente no hay necesidad de poner a su sujeto como la primera línea de su pregunta, todos lo leímos. Además, no necesitas gorras, solo hace que sea difícil de leer. – Robert