运行选择查询时出现错误“锁定请求超时”。
我知道这个错误什么时候会出现。一些事务应该锁定表。
但我需要知道如何找到它。
请注意,当它被锁定时,我无法实时检查它。就像过去发生的那样,但我需要知道当时阻止它的其他事务/查询是什么。
简单地说,我希望在发生这种情况时将这些事件记录在 sql 错误日志中,以便我以后可以查看并找出谁是长时间运行的查询阻塞它。
知道如何记录它。
我试图设置跟踪标志并检查。
DBCC TRACEON (1204,1222,-1)
但我找不到与此相关的任何记录。
提前致谢。
最佳答案
你运行的是什么版本的sql server?如果您使用的是 SQL 2008 之前的版本,那么您将需要与我们的 IT 人员一起实时分析它。
如果是 2008 年,您可以回顾性地查看死锁事件,因为它们在管理 View 中公开。它存储为 XML,但您可以很容易地将其分解...
Select
DLEvent.XEvent.value('(data/value)[1]', 'varchar(max)') as DeadlockGraph
From
(
select CAST(target_data as xml) as DLData
from sys.dm_xe_session_targets st
join sys.dm_xe_sessions s
on s.address = st.event_session_address
where name = 'system_health'
) AS DLData
CROSS APPLY DLData.nodes ('//RingBufferTarget/event') AS DLEvent (XEvent)
Where DLEvent.XEvent.value('@name', 'varchar(max)') = 'xml_deadlock_report'
关于sql server 错误 - 超过锁定请求超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4506970/