用于查找 SQL Server 中死锁的 T-SQL 查询
用于查找 SQL Server 中死锁的 T-SQL 查询
早些时候,我写了一篇关于使用扩展事件来查找 SQL Server 上发生的死锁的文章。扩展事件对于跟踪服务器上短时间内发生的死锁有很大帮助,尤其是在生产环境中。然而,在开发环境中,我遇到过当多个开发人员尝试对表执行 dml 语句时出现持续长时间死锁的情况。在这种情况下,我使用轻量级 T-SQL 查询来查找死锁,即SQL 连接的阻塞和阻塞会话 ID。根据该语句返回的详细信息,我能够找到执行阻塞会话的应用程序或用户,并帮助我终止特定的 SQL 连接。它还帮助我们识别并修复频繁阻塞的 SQL 语句。
下面是我用来快速查找死锁的查询。该语句基于SYS.DM_EXEC_REQUESTS动态管理视图。在此语句中,blocking_session_id列为您提供阻塞连接的 session_id,wait_type 列为您提供导致死锁的等待类型。获取blocking_session_id后,您可以使用另一个dmv SYS.DM_EXEC_SESSIONS来获取有关会话或连接的更多详细信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | SELECT session_id, start_time, [status], command, blocking_session_id, wait_type, wait_time, open_transaction_count, transaction_id, total_elapsed_time, Definition = CAST (text AS VARCHAR ( MAX )) FROM SYS.DM_EXEC_REQUESTS CROSS APPLY sys.dm_exec_sql_text(sql_handle) WHERE blocking_session_id != 0 |
希望这个查找死锁的简单查询对大家有所帮助。
参考
- 有关 sys.dm_exec_requests dmv 的更多信息,请访问Microsoft Docs。
引用
https://www.mytecbits.com/microsoft/sql-server/t-sql-query-to-find-deadlocks
喜欢请赞赏一下啦^_^
微信赞赏

支付宝赞赏

分类:
标签:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2021-07-29 Killable Processes in Oracle Database
2021-07-29 Know more about PGA_AGGREGATE_LIMIT 12c 19c