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

次のコードは、SQLServer上の現在のすべての要求とそのステータスを見つけるのに役立ちます。記録的なレベルには行けないと思います。私はそれについて間違っているかもしれません。

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 に答える