環境: SQL Server 2005 Express Edition
こんにちは。
Office も 2007 になって、開発をする過程で、SQL Server Express Edition などでトレースをする必要性に迫られるケースがあります。(SQL Server Management Studio Express でも、残念ながら SQL プロファイラーは付いていません。)
そこで、今回は、SQL Server でコマンドを使ってトレースをおこなう方法について説明します。(このコードは、[ ] の箇所を変更して、そのまま osql などでコピー/ペーストして使えます。)
osql などにログインしてください。
————————————————
1. 以下のコマンドで、Trace ファイルを作成します。
また、trace_id を出力して、以降で、このIDを使用します。
(ファイル名は適当に変更してください。)
————————————————
declare @trace_id intexec sp_trace_create @trace_id output, 0, N'C:\work\trace_test'print @trace_idgo
————————————————
2. 以下のコマンドで、トレースするイベントを設定します。
Office 2007 のビジネスデータカタログなどではRPCが使われるため、下記を取っておけば充分追っかけることは可能でしょう、、、
(trace_id は前述で出力されたIDを使用してください。)
————————————————
declare @trace_id intdeclare @on bitset @trace_id = [previous value]set @on = 1-- AuditLogin StartTimeexec sp_trace_setevent @trace_id, 14, 14, @on-- AuditLogin EndTimeexec sp_trace_setevent @trace_id, 14, 15, @on-- AuditLogin DatabaseNameexec sp_trace_setevent @trace_id, 14, 35, @on-- AuditLogin DBUserNameexec sp_trace_setevent @trace_id, 14, 40, @on-- SQL:BatchStarting TextDataexec sp_trace_setevent @trace_id, 13, 1, @on-- SQL:BatchStarting DatabaseNameexec sp_trace_setevent @trace_id, 13, 35, @on-- SQL:BatchStarting DBUserNameexec sp_trace_setevent @trace_id, 13, 40, @on-- SQL:BatchCompleted TextDataexec sp_trace_setevent @trace_id, 12, 1, @on-- SQL:BatchCompleted Errorexec sp_trace_setevent @trace_id, 12, 31, @on-- SQL:BatchCompleted DatabaseNameexec sp_trace_setevent @trace_id, 12, 35, @on-- SQL:BatchCompleted DBUserNameexec sp_trace_setevent @trace_id, 12, 40, @on-- RPC:Starting TextDataexec sp_trace_setevent @trace_id, 11, 1, @on-- RPC:Starting DatabaseNameexec sp_trace_setevent @trace_id, 11, 35, @on-- RPC:Starting DBUserNameexec sp_trace_setevent @trace_id, 11, 40, @on-- RPC:Completed TextDataexec sp_trace_setevent @trace_id, 10, 1, @on-- RPC:Completed Errorexec sp_trace_setevent @trace_id, 10, 31, @on-- RPC:Completed DatabaseNameexec sp_trace_setevent @trace_id, 10, 35, @on-- RPC:Completed DBUserNameexec sp_trace_setevent @trace_id, 10, 40, @on-- PrepareSQL TextDataexec sp_trace_setevent @trace_id, 71, 1, @on-- PrepareSQL DatabaseNameexec sp_trace_setevent @trace_id, 71, 35, @on-- PrepareSQL DBUserNameexec sp_trace_setevent @trace_id, 71, 40, @on-- ExecPreparedSQL TextDataexec sp_trace_setevent @trace_id, 72, 1, @on-- ExecPreparedSQL Errorexec sp_trace_setevent @trace_id, 72, 31, @on-- ExecPreparedSQL DatabaseNameexec sp_trace_setevent @trace_id, 72, 35, @on-- ExecPreparedSQL DBUserNameexec sp_trace_setevent @trace_id, 72, 40, @ongo
————————————————
3. トレースを開始します。
————————————————
declare @trace_id intset @trace_id = [previous value]exec sp_trace_setstatus @trace_id, 1go
————————————————
4. トレースを停止します。
————————————————
declare @trace_id intset @trace_id = [previous value]exec sp_trace_setstatus @trace_id, 0go
————————————————
5. トレースの終了処理をおこないます。
ここで、トレースファイルにすべてフラッシュバックされます。
————————————————
declare @trace_id intset @trace_id = [previous value]exec sp_trace_setstatus @trace_id, 2go
————————————————
あとは、上記で作成したトレースファイルを SQL Server Profiler のあるマシン上にコピーして SQL Server Profiler でトレースファイルを参照 (開く) するなどして、内容を確認してください。
Categories: Uncategorized