SQL トレースについて説明してみた
稼働中のシステムで、SQL トレースを取得しておくことで、障害発生時の調査に役立てることができます。SQL トレースは設定したインスタンスのバックグラウンドでトレースを取得することが可能です。取得できる情報は、SQL Server Profiler と同様です。トレースの生成・設定・起動・停止を行うには、下記の4つのストアドプロシージャを使用します。
- sp_trace_create
トレースファイルの定義を行います。 - sp_trace_setevent
トレースファイルで取得するイベントの定義を行います。 - sp_trace_setfilter
取得するイベントに対して、フィルター設定を行います。フィルターの詳しい説明は、ここを参照してください。 - sp_trace_setstatus
トレース処理の起動・停止および削除を行います。
途中まで書いたのですが、よく見ると上記のストアドプロシージャは SQL Server 2012 で非推奨 ( 気付くの遅いですね... ) になっていますね。
『代わりに拡張イベントを使用します。』という記載がありますね。ここに記載があります。色々変更されてますね。sp_trace_create は、下記の DDL 文で設定するようです。イベントの設定も同時にできるので、sp_trace_setevent の機能も包含しています。
CREATE EVENT SESSION test_session ON SERVER ADD EVENT sqlos.async_io_requested, ADD EVENT sqlserver.lock_acquired ADD TARGET package0.etw_classic_sync_target (SET default_etw_session_logfile_path = N'C:\demo\traces\sqletw.etl' ) WITH (MAX_MEMORY=4MB, MAX_EVENT_SIZE=4MB);
それ以外にも、GUI、オブジェクトエクスプローラー上で管理・参照可能になっていますね。下図のような画面です。
色々と追加されていますね。この辺りは勉強しておかないといけないですね。