Welcome to MSDN Blogs Sign in | Join | Help

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:\work\trace_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 でトレースファイルを参照 (開く) するなどして、内容を確認してください。

 

Published Tuesday, September 05, 2006 4:28 PM by tsmatsuz
Filed under:

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

No Comments

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker