SQL トレーススクリプトの作成、実行 (SQL Server 2005 以降)

神谷 雅紀
SQL Server Escalation Engineer

以降の画面は、SQL Server 2008 R2 のものですが、SQL Server 2005 以降のバージョンでは同様の手順、同様の画面です。

SQL Server 2000 については、以下を参照して下さい。

https://blogs.msdn.com/b/jpsql/archive/2011/01/26/sql-sql-server-2000.aspx

1. Profiler の起動

[スタート] - [すべてのプログラム] - [Microsoft SQL Server 2008 R2] – [パフォーマンスツール] – [SQL Server Profiler] から、Profiler を起動します。

2. 新しいトレースの作成

[ファイル] メニュー – [新しいトレース] を実行します。

 

続いて、SQL Server  名を指定し、SQL Server へ接続します。

 

3. トレースプロパティの指定

[すべてのイベントを表示する] 及び [すべての列を表示する] をチェックします。
これにより、すべてのイベントと列が表示されるようになります。

 

4. トレース対象イベントの指定

トレースしたいイベント名をチェックします。これによって、そのイベントとともに値が設定される列も自動的にチェックされます。

5. トレースの開始及び停止

[実行] によりトレースが開始されますが、今はトレースのための T-SQL スクリプトを生成することが目的であるため、トレースはすぐに停止します。

 

6. T-SQL スクリプトの保存

[ファイル] - [エクスポート] - [トレース定義のスクリプト] – [SQL Server 2005 – 2008 R2] を実行し、トレース定義スクリプトをファイルに保存します。

7. T-SQL スクリプトの修正

保存したトレース定義スクリプトをテキストエディタまたは Management Studio で開き、以下の点を確認します。

  • @maxfilesize (トレースファイルの最大サイズ) が指定したサイズになっているかどうか。
  • sp_trace_create の第 2 引数が 2 (ロールオーバー) になっているかどうか。
  • sp_trace_create の第 3 引数が正しいトレースファイルパス及びファイル名になっているかどうか。

 

8. トレースの開始

トレース定義スクリプトを実行すると、実行結果として TraceID が返されます。
この ID は、今開始したトレースを停止する際に必要となるため、控えておきます。

指定されているトレースファイルが既に存在している場合など、エラーが発生した場合には、TraceID ではなくエラーコードが返されます。ファイルが存在する場合には削除するなど、Books Online でエラーコードの意味を確認し、エラーの修正を行います。

sp_trace_create (Transact-SQL)
https://msdn.microsoft.com/ja-jp/library/ms190362.aspx

9. トレースの停止

トレース停止時には、sp_trace_setstatus を用います。

sp_trace_setstatus <8 で控えた TraceID>, 0 // トレースの停止
sp_trace_setstatus <8 で控えた TraceID>, 2 // トレース定義の削除

もし、TraceID が分からなくなってしまった場合は、fn_trace_getinfo 関数を使用することで、実行中のトレースの TraceID を確認することができます。

Select * from ::fn_trace_getinfo(NULL)

 

 

 

2011/1/25 新規公開
2014/10/30 更新 バージョン追加