sql server错误 - 超出锁定请求超时

时间:2010-12-22 07:15:50

标签: sql sql-server logging locking

运行选择查询时,我收到错误'超出锁定请求超时'。

我知道什么时候会出现这个错误。某些事务应该锁定表。

但我需要知道如何找到它。

请注意,我锁定时无法检查。它就像它过去发生的那样,但我需要知道那个时候阻塞它的其他事务/查询是什么。

简单地说,我希望在发生这种情况时将这些事件记录在sql错误日志中,这样我以后就可以看到并查找阻止它的长时间运行查询。

知道如何记录它。 我试着设置跟踪标志并检查。 DBCC TRACEON(1204,1222,-1) 但我找不到与此相关的任何记录。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您运行的是哪个版本的sql server?如果您使用的是SQL 2008之前的版本,那么您需要与我们的IT人员一起在现场进行实时分析。

如果是2008,您可以回顾性地查看管理视图中公开的死锁事件。它存储为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'