我使用这个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
但是这只显示了现在锁定的表。我可以显示锁定的记录。
答案 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 )