Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Вывести список блокировок

01.01.2007

Можно стандартными средствами, но я предпочитаю свой способ, он мне кажется даёт более понятный результат.

Select * From
(
       
select         convert (smallint, req_spid) As spid,
                Db_Name
(rsc_dbid) As dbName,
                Object_Name
(rsc_objid) As ObjId,
                rsc_indid
As IndId,
               
Case substring (v.name, 1, 4)
                       
when 'FIL' then 'File'
                       
when 'DB'  then 'Database'
                       
when 'IDX' then 'Index'
                       
when 'PAG' then 'Page'
                       
when 'KEY' then 'Key'
                       
when 'TAB' then 'Table'
                       
when 'EXT' then 'Extent'
                       
when 'RID' then 'Row'
                       
else v.name
               
End As LockType,
                substring
(rsc_text, 1, 16) as Resource,
               
Case substring (u.name, 1, 8)
                       
When 'S' then 'Shared'
                       
When 'U' then 'Update'
                       
When 'X' then 'Exclusive'
                       
When 'I' then 'Intent'
                       
When 'IS' then 'Intent Shared'
                       
When 'IX' then 'Intent Exclusive'
                       
When 'IU' then 'Intent Update'
                       
When 'SIX' then 'shared with intent exclusive'
                       
When 'BU' then 'Bulk Update'
                       
else u.name
               
End As LockMode,
                substring
(x.name, 1, 5) As Status
 
       
from         master.dbo.syslockinfo,
                master
.dbo.spt_values v,
                master
.dbo.spt_values x,
                master
.dbo.spt_values u
 
       
where   master.dbo.syslockinfo.rsc_type = v.number
                       
and v.type = 'LR'
                       
and master.dbo.syslockinfo.req_status = x.number
                       
and x.type = 'LS'
                       
and master.dbo.syslockinfo.req_mode + 1 = u.number
                       
and u.type = 'L'
) as t
Where dbName=Db_Name() and ObjId is not NULL
Order By ObjId, LockMode

Автор: Vit