Sql Server 查询锁定相关语句

-- 查询资源等待者以及资源锁定者会话信息
select DB_NAME(resource_database_id) '数据库'
,obj.name '锁定对象'
,t1.resource_type '资源锁定类型'
, t1.request_mode '等待者请求的锁定模式'
,t1.request_status
,t1.request_session_id '等待者SID'
--,(
--    select TEXT
--    from sys.dm_exec_requests r
--    cross apply
--    sys.dm_exec_sql_text(r.sql_handle)
--    where r.session_id = t1.request_session_id
--) '等待者要执行的SQL'
--,t2.blocking_session_id '锁定者SID'
--,(
--    select TEXT
--    from sys.sysprocesses p
--    cross apply
--    sys.dm_exec_sql_text(p.sql_handle)
--    where p.spid = t2.blocking_session_id
--)'锁定者执行语句'
from sys.dm_tran_locks t1
    inner join sysobjects obj on t1.resource_associated_entity_id=obj.id
    left join sys.dm_os_waiting_tasks t2 on t1.lock_owner_address=t2.resource_address
where t1.resource_type='OBJECT'
order by t2.wait_duration_ms desc

-- 查询指定会话的待执行sql语句
declare @sessionId int=55 -- 会话编号
declare @sqlHandle varbinary(max) -- 句柄
select @sqlHandle=sql_handle 
from sys.dm_exec_requests 
where session_id=@sessionId
select @sessionId 'sessionId',* from sys.dm_exec_sql_text(@sqlHandle)

-- 释放指定会话资源
--kill 51

---- 查询数据库兼容级别
--GO
--SELECT compatibility_level -- 2000-80;2005-90;2008-100;2012-110
--,*
--FROM sys.databases
--WHERE name = 'Products';
--GO

 

posted @ 2020-10-11 11:08  温故纳新  阅读(360)  评论(0编辑  收藏  举报