选择表中的锁定记录

时间:2012-04-13 16:17:51

标签: sql sql-server-2008 tsql

我使用这个Tsql在我的数据库中选择锁定对象:

select  
    object_name(P.object_id) as TableName, 
    resource_type, resource_description
from
    sys.dm_tran_locks L join sys.partitions P
                   on L.resource_associated_entity_id = p.hobt_id

但是这只显示了现在锁定的表。我可以显示锁定的记录。

2 个答案:

答案 0 :(得分:1)

以下代码将帮助您查找SQL Server上的所有当前请求及其状态。我相信你不能达到创纪录的水平。我可能错了。

SELECT r.session_id, r.status, r.start_time, r.command, s.text, 
r.wait_time, r.cpu_time, r.total_elapsed_time, r.reads, r.writes, r.logical_reads, r.transaction_isolation_level 
,r.* 
FROM sys.dm_exec_requests r 
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) s

以下内容将告诉您阻止您的请求的内容。

select distinct object_name(a.rsc_objid), a.req_spid, b.loginame 
from master.dbo.syslockinfo a (nolock) join 
master.dbo.sysprocesses b (nolock) on a.req_spid=b.spid 
where object_name(a.rsc_objid) is not null

答案 1 :(得分:0)

有一个(未公开的)方法! 我知道这为时已晚,但对于仍在寻找答案的人们来说:

SELECT <main_key>
FROM <table>
WHERE %%lockres%% IN ( select dm_tran_locks.resource_description from sys.dm_tran_locks )