0

我使用这个 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

但这只会显示现在锁定的表。如何显示锁定的记录。

4

2 回答 2

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
于 2012-04-13T16:45:27.977 回答
0

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

SELECT <main_key>
FROM <table>
WHERE %%lockres%% IN ( select dm_tran_locks.resource_description from sys.dm_tran_locks )
于 2019-01-16T15:01:17.217 回答