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

神谷 雅紀
SQL Server Escalation Engineer

 

SQL Server 2000 トレーススクリプトの作成方法です。SQL Server 2005, 2008, 2008 R2 については以下を参照して下さい。

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

 

1. Profiler の起動

[スタート] - [すべてのプログラム] - [Microsoft SQL Server] – [プロファイラ] から、Profiler を起動します。

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

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

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

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

[全般] タブで、[ファイルに保存]、 [ファイルロールオーバーを有効にする] 、「サーバーが SQl Server トレースを処理する」をチェックします。また、トレースの最大ファイルサイズを指定します。

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

[イベント] タブで、トレースしたいイベント名を選択します。

5. データ列の選択

[データ列] タブで、トレースするデータ列を選択します。

有効なデータ列は、イベントごとに異なるため、どの列が有効であるのかは、Books Online 「SQL プロファイラのイベント カテゴリによる監視」で確認します。

 

SQL プロファイラのイベント カテゴリによる監視

https://msdn.microsoft.com/ja-jp/library/aa173900(v=sql.80).aspx

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

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

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

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

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

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

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

 

9. トレースの開始

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

指定されているトレースファイル名と同名のファイルが同じパス上に既に存在している場合、TraceID ではなく ErrorCode 12 が返されます。ErrorCode 12 が返された場合は、既存のトレースファイルを削除するか、トレースファイル名を変更後、再度トレースを開始します。

10. トレースの停止

トレース停止時には、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)