with Lock(level, dbName,spid,blocked,sql_handle)
as
(select 0 as level, db_name(dbid),spid,blocked,sql_handle from master..sysprocesses a where blocked > 0
union all
select level + 1 as Level, db_name(a.dbid),a.spid,a.blocked,a.sql_handle from master..sysprocesses a join lock b on a.spid = b.blocked and a.spid <> a.blocked
where level < 5)
select distinct a.level, a.dbName, a.spid, a.blocked,
case when (a.blocked <> 0) then 'blocked' else 'blocker' end as actor, b.*
from Lock a cross apply sys.dm_exec_sql_text(a.sql_handle)b
order by actor desc
(责任编辑:IT) |