扩展事件死锁 xml 报告中的 SQL 查询日志记录太短

Abs*_*Web 5 sql-server deadlock extended-events

如何告诉 sql server 在 xml 中记录整个查询,而不是截断它?

例子:

   <inputbuf>
(@0 nvarchar(20),@1 nvarchar(10),@2 decimal(38,20),@3 int,@4 datetime,@5 nvarchar(10))IF EXISTS(SELECT TOP 1 NULL FROM "MySQLDB".dbo."MyTable$Reservation Entry" WITH(UPDLOCK)  WHERE ("Item No_"=@0 AND "Location Code"=@1 AND "Quantity (Base)"&gt;@2 AND "Reservation Status"=@3 AND "Expected Receipt Date"&lt;=@4 AND "Variant Code"=@5)) SELECT "timestamp","Entry No_","Positive","Item No_","Location Code","Quantity (Base)","Reservation Status","Description","Creation Date","Transferred from Entry No_","Source Type","Source Subtype","Source ID","Source Batch Name","Source Prod_ Order Line","Source Ref_ No_","Item Ledger Entry No_","Expected Receipt Date","Shipment Date","Serial No_","Created By","Changed By","Qty_ per Unit of Measure","Quantity","Binding","Suppressed Action Msg_","Planning Flexibility","Appl_-to Item Entry","Warranty Date","Expiration Date","Qty_ to Handle (Base)","Qty_ to Invoice (Base)","Quantity Invoiced (Base)","New Serial No_","New Lot No_","Disallow Cancellation","Lot No_","Vari   </inputbuf>
  </process>
Run Code Online (Sandbox Code Playgroud)

这取自 sql server management studio 17.4,管理,扩展事件,会话,system_health,package0.event_file 事件详细信息 xml_report 值。如您所见,显示的查询已被截断。有没有办法告诉 SQL 记录所有查询而不截断它?

如果没有办法告诉 sql 不截断,那么检索整个查询的最佳方法是什么?

谢谢

sep*_*pic 5

如果没有办法告诉 sql 不要截断,那么检索整个查询的最佳方法是什么

每个都deadlock graph包含sqlhandle参与的每个进程,并且可用于检索sql_text

select *
from sys.dm_exec_sql_text(0x01000c001247710230b2bfa34800000000000000000000000000000000000000000000000000000000000000)
Run Code Online (Sandbox Code Playgroud)

其中参数 for 的值sys.dm_exec_sql_textsqlhandle来自死锁图的值。

这样,如果语句的执行计划仍在 中,您就可以获得语句cache

您需要有VIEW SERVER STATE查询权限sys.dm_exec_sql_text