All Blocking Session

Configurare noua (How To)

Situatie

In scopul de a fi de ajutor la optimizarea proceselor pe un server de sql, am facut o procedura care returneaza blocajele de pe server din momnentul in care este rulata, si, printre informatiile utile, arata cine pe cine blocheaza , ce obiect este sursa blocajului, si ce ruleaza fiecare dintre cei implicati in blocaj.

Solutie

create procedure BlockingSession

as

SELECT
db.name DBName,
tl.request_session_id,
wt.blocking_session_id,
OBJECT_NAME(p.OBJECT_ID) BlockedObjectName,
tl.resource_type,
h1.TEXT AS RequestingText,
h2.TEXT AS BlockingTest,
tl.request_mode
FROM sys.dm_tran_locks AS tl
INNER JOIN sys.databases db ON db.database_id = tl.resource_database_id
INNER JOIN sys.dm_os_waiting_tasks AS wt ON tl.lock_owner_address = wt.resource_address
INNER JOIN sys.partitions AS p ON p.hobt_id = tl.resource_associated_entity_id
INNER JOIN sys.dm_exec_connections ec1 ON ec1.session_id = tl.request_session_id
INNER JOIN sys.dm_exec_connections ec2 ON ec2.session_id = wt.blocking_session_id
CROSS APPLY sys.dm_exec_sql_text(ec1.most_recent_sql_handle) AS h1
CROSS APPLY sys.dm_exec_sql_text(ec2.most_recent_sql_handle) AS h2

Tip solutie

Permanent
Etichetare:

Voteaza

(19 din 50 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?