Look for table lock escalations

Look for table lock escalations.

Last updated:

Warning: Review and test in a non-production environment before running.

Back to results

-- Look for table lock escalations (connect to the necessary database)
SELECT
    dtl.request_session_id,
    dtl.resource_type,
    DB_NAME(dtl.resource_database_id) AS database_name,
    OBJECT_NAME(dtl.resource_associated_entity_id) AS table_name,
    dtl.request_mode,
    dtl.request_type,
    dtl.request_status,
    (SELECT SUBSTRING(est.[text], ers.statement_start_offset/2 + 1,
        (CASE WHEN ers.statement_end_offset = -1
            THEN LEN(CONVERT(nvarchar(max), est.[text])) * 2
            ELSE ers.statement_end_offset
            END
            - ers.statement_start_offset
        ) / 2)
        FROM sys.dm_exec_requests AS ers
        CROSS APPLY sys.dm_exec_sql_text(ers.[sql_handle]) AS est
        WHERE ers.session_id = dtl.request_session_id) AS esculation_query_text
FROM sys.dm_tran_locks as dtl
    INNER JOIN sys.all_objects AS aos ON dtl.resource_associated_entity_id = aos.[object_id]
WHERE dtl.request_type = 'LOCK'
    AND dtl.request_status = 'GRANT'
    AND dtl.request_mode IN ('X', 'S')
    AND aos.[type] = 'U'
    AND dtl.resource_type = 'OBJECT'
    AND dtl.resource_database_id = DB_ID()