Uncategorized

SQL Server をコマンドでトレースする

環境: 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 int
exec sp_trace_create @trace_id output, 0, N’C:worktrace_test’
print @trace_id
go

————————————————
 2. 以下のコマンドで、トレースするイベントを設定します。
Office 2007 のビジネスデータカタログなどではRPCが使われるため、下記を取っておけば充分追っかけることは可能でしょう、、、
(trace_id は前述で出力されたIDを使用してください。)
————————————————
declare @trace_id int
declare @on bit
set @trace_id = [previous value]
set @on = 1

— AuditLogin StartTime
exec sp_trace_setevent @trace_id, 14, 14, @on
— AuditLogin EndTime
exec sp_trace_setevent @trace_id, 14, 15, @on
— AuditLogin DatabaseName
exec sp_trace_setevent @trace_id, 14, 35, @on
— AuditLogin DBUserName
exec sp_trace_setevent @trace_id, 14, 40, @on

— SQL:BatchStarting TextData
exec sp_trace_setevent @trace_id, 13, 1, @on
— SQL:BatchStarting DatabaseName
exec sp_trace_setevent @trace_id, 13, 35, @on
— SQL:BatchStarting DBUserName
exec sp_trace_setevent @trace_id, 13, 40, @on

— SQL:BatchCompleted TextData
exec sp_trace_setevent @trace_id, 12, 1, @on
— SQL:BatchCompleted Error
exec sp_trace_setevent @trace_id, 12, 31, @on
— SQL:BatchCompleted DatabaseName
exec sp_trace_setevent @trace_id, 12, 35, @on
— SQL:BatchCompleted DBUserName
exec sp_trace_setevent @trace_id, 12, 40, @on

— RPC:Starting TextData
exec sp_trace_setevent @trace_id, 11, 1, @on
— RPC:Starting DatabaseName
exec sp_trace_setevent @trace_id, 11, 35, @on
— RPC:Starting DBUserName
exec sp_trace_setevent @trace_id, 11, 40, @on

— RPC:Completed TextData
exec sp_trace_setevent @trace_id, 10, 1, @on
— RPC:Completed Error
exec sp_trace_setevent @trace_id, 10, 31, @on
— RPC:Completed DatabaseName
exec sp_trace_setevent @trace_id, 10, 35, @on
— RPC:Completed DBUserName
exec sp_trace_setevent @trace_id, 10, 40, @on

— PrepareSQL TextData
exec sp_trace_setevent @trace_id, 71, 1, @on
— PrepareSQL DatabaseName
exec sp_trace_setevent @trace_id, 71, 35, @on
— PrepareSQL DBUserName
exec sp_trace_setevent @trace_id, 71, 40, @on

— ExecPreparedSQL TextData
exec sp_trace_setevent @trace_id, 72, 1, @on
— ExecPreparedSQL Error
exec sp_trace_setevent @trace_id, 72, 31, @on
— ExecPreparedSQL DatabaseName
exec sp_trace_setevent @trace_id, 72, 35, @on
— ExecPreparedSQL DBUserName
exec sp_trace_setevent @trace_id, 72, 40, @on

go

————————————————
 3. トレースを開始します。
————————————————
declare @trace_id int
set @trace_id = [previous value]
exec sp_trace_setstatus @trace_id, 1
go

————————————————
 4. トレースを停止します。
————————————————
declare @trace_id int
set @trace_id = [previous value]
exec sp_trace_setstatus @trace_id, 0
go

————————————————
 5. トレースの終了処理をおこないます。
 ここで、トレースファイルにすべてフラッシュバックされます。
————————————————
declare @trace_id int
set @trace_id = [previous value]
exec sp_trace_setstatus @trace_id, 2
go

————————————————

あとは、上記で作成したトレースファイルを SQL Server Profiler のあるマシン上にコピーして SQL Server Profiler でトレースファイルを参照 (開く) するなどして、内容を確認してください。

 

Advertisements

Categories: Uncategorized

Tagged as:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s