Skip to content

Script para el diagnóstico de bloqueos en SQL Server

20/01/2015
SQLServerLogo

La aparición de bloqueos entre procesos en un motor de bases de datos SQL Server es una de las causas más comunes de problemas de funcionamiento y su correcto diagnóstico nos permitirá atacar la falla y resolverla rápidamente.

Les presento a continuación un script que he desarrollado y que muestra para los procesos bloqueados su ID de sesión, el objeto que se encuentra bloqueado y las sentencias TSQL que generan este bloqueo:

SELECT  bloqueante.session_id as SesionBloqueante,
bloqueante.client_net_address as HostBloqueante,
bloqueada.session_id as SesionBloqueada,
OBJECT_NAME(SUBSTRING(resource_description,
PATINDEX(‘%associatedObjectId%’, resource_description) + 19,
LEN(resource_description))) as ObjetoBloqueado,
TSQLBloqueante.text as SentenciaBloqueante,
TSQLBloqueada.text as SentenciaBloqueada
FROM     sys.dm_exec_connections AS bloqueante
INNER JOIN sys.dm_exec_requests bloqueada ON bloqueante.session_id = bloqueada.blocking_session_id
INNER JOIN sys.dm_os_waiting_tasks waitstats ON waitstats.session_id = bloqueada.session_id
CROSS APPLY sys.dm_exec_sql_text(bloqueante.most_recent_sql_handle) AS TSQLBloqueante
CROSS APPLY sys.dm_exec_sql_text(bloqueada.sql_handle) AS TSQLBloqueada

Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: