0

SQLプロファイラーを次のように設定しました-

テンプレート:チューニング

dbo.myTableに保存

イベントの選択:2000(ms)以上の期間

これにより、イベントRPC:Completed、SP:StmtCompleted、およびSQL:BatchCompletedのTextData、Duration、SPID、DatabaseID、DatabaseName、ObjectType、LoginNameが記録されます。

SQLトレースのスクリプトをエクスポートし、以下のスクリプトを作成しました。ただし、ファイルではなくデータベーステーブルに書き込むためのトレースが必要です。代わりにdbテーブルに書き込むようにスクリプトを変更するにはどうすればよいですか?

/****************************************************/
/* Created by: SQL Server Profiler 2005             */
/* Date: 21/06/2010  09:32:56         */
/****************************************************/


-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5 

-- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- write access to your network share

exec @rc = sp_trace_create @TraceID output, 0, N'InsertFileNameHere', @maxfilesize, NULL 
if (@rc != 0) goto error

-- Client side File and Table cannot be scripted

-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 10, 1, @on
exec sp_trace_setevent @TraceID, 10, 3, @on
exec sp_trace_setevent @TraceID, 10, 11, @on
exec sp_trace_setevent @TraceID, 10, 35, @on
exec sp_trace_setevent @TraceID, 10, 12, @on
exec sp_trace_setevent @TraceID, 10, 13, @on
exec sp_trace_setevent @TraceID, 45, 1, @on
exec sp_trace_setevent @TraceID, 45, 3, @on
exec sp_trace_setevent @TraceID, 45, 11, @on
exec sp_trace_setevent @TraceID, 45, 35, @on
exec sp_trace_setevent @TraceID, 45, 12, @on
exec sp_trace_setevent @TraceID, 45, 28, @on
exec sp_trace_setevent @TraceID, 45, 13, @on
exec sp_trace_setevent @TraceID, 12, 1, @on
exec sp_trace_setevent @TraceID, 12, 3, @on
exec sp_trace_setevent @TraceID, 12, 11, @on
exec sp_trace_setevent @TraceID, 12, 35, @on
exec sp_trace_setevent @TraceID, 12, 12, @on
exec sp_trace_setevent @TraceID, 12, 13, @on


-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint

set @bigintfilter = 2000000
exec sp_trace_setfilter @TraceID, 13, 0, 4, @bigintfilter

-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1

-- display trace id for future references
select TraceID=@TraceID
goto finish

error: 
select ErrorCode=@rc

finish: 
go
4

1 に答える 1

1

できません。Profilerは、行セットプロバイダーを使用してこれを行います。

サーバー側のトレースに使用できるのは、フラットファイルプロバイダーのみです。ファイルからテーブルに挿入したり、テーブルのようにファイルを読み取ったりするのは簡単fn_trace_gettableです。

于 2010-06-21T08:55:23.593 に答える