Created
January 23, 2025 22:04
-
-
Save petesql/c16f7a19e154e42a001e303b682904b0 to your computer and use it in GitHub Desktop.
Get Exclusive Locks for Tables in SQL Server
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- show exclusive locks on tables for a database | |
DECLARE @DatabaseName NVARCHAR(128) = 'database01' | |
DECLARE @DatabaseID INT = DB_ID(@DatabaseName) | |
DECLARE @SQL NVARCHAR(MAX) | |
SET @SQL = N' | |
USE ' + QUOTENAME(@DatabaseName) + '; | |
SELECT | |
ses.login_name AS UserName, | |
ses.session_id AS SessionID, | |
ses.host_name AS hostname, | |
obj.name AS ObjectName, | |
obj.type_desc AS ObjectType, | |
locks.resource_type AS ResourceType, | |
locks.request_status AS LockStatus, | |
CASE | |
WHEN locks.request_mode = ''SCH-S'' THEN ''Sch-S (Schema stability)'' | |
WHEN locks.request_mode = ''IS'' THEN ''IS (Intent Shared)'' | |
WHEN locks.request_mode = ''X'' THEN ''X (Exclusive)'' | |
WHEN locks.request_mode = ''IX'' THEN ''IX (Intent Exclusive)'' | |
WHEN locks.request_mode = ''S'' THEN ''S (Shared)'' | |
WHEN locks.request_mode = ''U'' THEN ''U (Update)'' | |
ELSE ''NULL (No access granted)'' | |
END AS LockType, | |
ses.program_name AS programName, | |
ses.client_interface_name AS clientInterface | |
FROM sys.dm_tran_locks AS locks | |
JOIN sys.dm_exec_sessions AS ses ON locks.request_session_id = ses.session_id | |
JOIN sys.objects AS obj ON locks.resource_associated_entity_id = obj.object_id | |
WHERE locks.resource_database_id = ' + CAST(@DatabaseID AS VARCHAR(10)) + ';' | |
EXEC sp_executesql @SQL; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment