Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Requête de blocage SQL Server

Bonjour,

Pendant que vous utilisez votre programme connecté à la base de données SQL Server, vous pouvez ressentir une lenteur sur les applications liées à la base de données SQL Server. Ce problème est probablement lié au blocage de la session et au verrouillage de la base de données.

Pour rechercher des sessions ou des requêtes bloquantes, exécutez le script suivant. Si la requête bloquante n'est pas terminée dans un court laps de temps, vous pouvez la supprimer après avoir demandé au client.

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
GO