declare @l table(spid int, dbiid int, ObjId int, IndId int, Type varchar(8), Resource varchar(100), Mode varchar(10), Status varchar(50))

declare @lock table(spid int, CountLock int)

 

 --все блокировки

insert into @l exec sp_lock 

 

 --блокировки с количеством объектов >1

insert into @lock select spId, count(*) from @l group by spId having Count(*)>1

 

 --чья сессия вызвала блокировку более одного объекта

select * from @lock l left join sys.dm_exec_sessions s on l.spid = s.session_id

 

 --детально по заблокированным объектам

select spid, dbiid, DBNAME = DB_NAME(dbiid) , ObjId, ObjName = OBJECT_NAME(ObjId) , IndId, Type, Resource, Mode, Status

from @l

where spid in (select spid from @lock)

 

 --select * from sys.dm_exec_sessions

 --kill 142

/*

select * from sys.dm_exec_sessions

--exec sp_who exec sp_who2

*/