Hus*_*e69 5 sql-server database-deadlocks
我有一个针对 SQL Server 2016 数据库运行的应用程序,该数据库导致死锁。
死锁图显示了底层对象的 Objectid 和对象名称。它还提供了截断的 SQL 语句。
但是,某些语句相当大,超出了实体的 XML 死锁报告中的 1024 个字符限制<inputbuf>。我希望能够查看这些锁中涉及的完整语句,以便我可以重现和调试问题。
有没有一种方法可以增加这个限制,或者有没有一种方法可以在给定死锁图中包含的事务描述符的情况下找到完整的 SQL 语句?
我发现我可以使用 SQL Handle 字符串获取死锁中每个查询的完整 SQL 文本(SQL Handle 包含在死锁图/XDL 中)。
例如,在死锁 XML 中:
<frame procname="adhoc" line="1" stmtend="368" sqlhandle="0x02000000309a63065dbc0db09405222fe0f66eb954ed1d870000000000000000000000000000000000000000">
Run Code Online (Sandbox Code Playgroud)
将 sqlhandle 传递给 sys.dm_exec_sql_text
SELECT * FROM sys.dm_exec_sql_text(0x02000000309a63065dbc0db09405222fe0f66eb954ed1d870000000000000000000000000000000000000000000000000000000000000000000000000) -- modify this value with your actual sql_handle
Run Code Online (Sandbox Code Playgroud)