web-dev-qa-db-ja.com

拡張イベントでのSQLクエリのログ記録のデッドロックxmlレポートが短すぎます

クエリ全体をXMLに記録し、切り捨てないようにSQLサーバーに指示するにはどうすればよいですか?

例:

   <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>

これは、SQLサーバー管理スタジオ17.4、管理、拡張イベント、セッション、system_health、package0.event_fileイベント詳細xml_report値から取得されます。ご覧のとおり、クエリは切り捨てられています。クエリを切り捨てずにすべてのログを記録するようにSQLに指示する方法はありますか?

切り捨てないようにSQLに指示する方法がない場合、クエリ全体を取得する最良の方法は何ですか?

ありがとうございました

4

切り捨てないようにSQLに指示する方法がない場合、クエリ全体を取得する最良の方法は何ですか

すべてのdeadlock graphには、参加するすべてのプロセスのsqlhandleが含まれており、sql_textの取得に使用できます。

select *
from sys.dm_exec_sql_text(0x01000c001247710230b2bfa34800000000000000000000000000000000000000000000000000000000000000)

ここで、sys.dm_exec_sql_textのパラメーターの値は、デッドロックグラフからのsqlhandleです。

これにより、実行プランがまだcacheにある場合にステートメントを取得できます。

3
sepupic