アプリケーションで使用されるステートメントをトレースするために、拡張イベントを使用しています。必要な情報を収集するセッションを作成しましたが、使用したパラメーターの実際の値も知りたいと思っています。
私はこのトレースを非実稼働環境で実行しており、トレースによるパフォーマンスへの影響は許容されます。
すべてのクエリはHibernateから発信され、次の形式でパラメーター化されています。
SELECT a, b, c From Customer where CustomerId = @P0
これは私のセッション設定です。
CREATE EVENT SESSION [TracingForStatements] ON SERVER
ADD EVENT sqlserver.sp_statement_completed (
ACTION (
sqlserver.session_id,
package0.collect_system_time,
sqlserver.transaction_id,
package0.event_sequence
)
WHERE (
sqlserver.database_id=555
)
)
ADD TARGET package0.ring_buffer(SET max_memory= 128000)
WITH (EVENT_RETENTION_MODE = NO_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 1 SECONDS)
キャプチャされたステートメントで使用されたパラメーターの実際の値をキャプチャするにはどうすればよいですか?出来ますか?
- 編集(回避策):イベントをrpc_completedに変更すると、Hibernateから呼び出される完全なsqlコマンド(すべてのパラメーター値を含む)が表示されます。その他の場合でも、可能であれば、パラメータ値をキャプチャする方法を知っておくとよいでしょう。
sqlserver.rpc_completedがパラメーター値を含む完全なT-SQLを提供しているかどうかを確認します。
—
Ivan Stankovic 2014
@IvanStankovic、そう、それは私がそれをしなければならなかった方法です。「編集」の質問で述べたように。
—
Peter Henell 2014