サーバー側のトレースによって作成されたTEXTDATA列を含むトレースファイルがあります。トレースされたクエリの一部は非常に長いです。
プロファイラーでトレースファイルを再度開くと、関連する長いクエリが完全に表示されます。テキストは340行、10951文字です。
しかし、トレースファイルをSQL-Serverテーブルにインポートした後、関連するクエリが切り捨てられたようです。テーブルには、 fn_trace_gettable メソッドによって作成されたntext列があります。
さまざまな方法を使用してテーブルをクエリしました。SSMSでのテキスト出力(最大文字数が構成されている)は、52行目で出力を中断します。SSMSのファイル出力(* .rpt)も切り捨てられます。ここで、クエリは250行目で切り捨てられます。
だから今私は、トレースファイルからSQL ServerテーブルにWHOLEクエリを取得することは可能ですか?
SSMSは、XMLとして入力されない限り、常に長い文字列を切り捨てます。この場合、無制限を許可するように設定できます。
私が通常使用する回避策( ここから )は以下のとおりです
SELECT (SELECT YourTraceDataColumn AS [processing-instruction(x)] FOR XML PATH(''), TYPE)
FROM YourTraceTable
これにより、先頭に(<?x
)および末尾(?>
)文字を使用しますが、それ以外の場合はデータをそのままにし、文字をXMLエンティティに置き換えません。