我可以用来监视由UPDATE语句引起的SQL Server DeadLock的哪个SQL语句(函数或存储过程)?SQl语句来监视SQL Server锁
0
A
回答
2
我认为你最好使用SQL Profiler监视死锁 - 请参阅here。 SQL事件探查器在图表中显示死锁,以便更容易地确定造成它们的原因。
3
尝试此查询看到阻塞进程,包括实际的SQL查询文本:
SELECT
r.session_id AS spid
,r.cpu_time,r.reads,r.writes,r.logical_reads
,r.blocking_session_id AS BlockingSPID
,LEFT(OBJECT_NAME(st.objectid, st.dbid),50) AS ShortObjectName
,LEFT(DB_NAME(r.database_id),50) AS DatabaseName
,s.program_name
,s.login_name
,OBJECT_NAME(st.objectid, st.dbid) AS ObjectName
,SUBSTRING(st.text, (r.statement_start_offset/2)+1,((CASE r.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE r.statement_end_offset
END - r.statement_start_offset
)/2
) + 1
) AS SQLText
FROM sys.dm_exec_requests r
JOIN sys.dm_exec_sessions s ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text (sql_handle) st
--WHERE [email protected]@SPID --uncomment to not see this query
死锁很容易被困剖析:
尝试运行运行跟踪在分析器(挑空白模板),选择“死锁图形事件”,然后在出现的新选项卡(事件提取设置)上,将它们分别保存在自己的文件中(将“单独保存死锁XML事件”)。用xml查看器打开这个文件,很容易知道发生了什么。每个进程都包含一个执行堆栈的过程/触发器等等,并且所有的锁也在那里。
查看文件的“资源列表”部分,它将显示每个进程导致死锁的锁定和持有的内容。找出如何不锁定其中的一个,并解决死锁问题。
让此跟踪运行,直到死锁再次发生,信息仅在死锁发生时记录,所以没有太多开销。如果它再也没有发生过,那它就解决好了,如果没有,你就捕获了所有的信息。
0
SELECT * FROM sys.dm_exec_requests WHERE blocking_session_id <> 0
但是,这会显示阻塞的请求,这对SQL Server来说是正常的,并不表示出现死锁。如果SQL Server检测到死锁,它将会终止其中一个进程以允许其他进程继续。所以你不能使用函数或存储过程来监视它,因为它发生的时间已经完成了。
您可以使用SQL Profiler或Trace Flags
相关问题
- 1. 如何监视SQL Server 2005上执行的sql语句
- 2. SQL server T-SQL语句
- 3. SQL Server状态监视器
- 4. SQL Server死锁(SQL Server 2000)
- 5. where语句中的case语句 - SQL Server
- 6. 使用SQL Server MERGE语句
- 7. SQL Server 2008的Case语句
- 8. case语句 - SQL Server 2008中
- 9. SQL SERVER CASE语句澄清
- 10. Microsoft SQL Server SELECT语句
- 11. SQL Server的SELECT语句
- 12. SQL Server - select into from语句?
- 13. 为SQL Server Select语句
- 14. SQL Server中的CASE语句
- 15. SQL Server插入语句
- 16. 插入语句SQL Server
- 17. SQL Server中的USE语句
- 18. SQL Server的连接语句
- 19. SQL Server的连接语句
- 20. SQL Server语句输出
- 21. SQL SERVER 2008 Select语句
- 22. SQL Server语句无效
- 23. SQL SERVER 2005 USE语句
- 24. SQL Server从CASE语句
- 25. SQL Server 2008中EXCEPT语句
- 26. SQL Server - Hibernate选择SQL语句
- 27. sql-server,SQL查询中的IF语句
- 28. SQL Server的SQL语句 - 更新记录
- 29. T-SQL中的SQL Server CASE语句
- 30. SQL Server的锁
将显示该链接现在是死的。 – 2014-02-25 18:58:23