SQL Server Profiler 雖好用但不支援排程。若需定時自動啟動追蹤(如透過 SQL Agent Job),必須使用 T-SQL 呼叫系統預存程序。本文提供完整腳本範例、最簡產生腳本步驟、查看/停止追蹤指令,並說明已知限制。
DECLARE @rc INT, @TraceID INT, @maxfilesize BIGINT
SET @maxfilesize = 5
EXEC @rc = sp_trace_create @TraceID OUTPUT, 0, N'c:\test', @maxfilesize, NULL
IF (@rc != 0) GOTO error
DECLARE @on BIT = 1
-- 設定事件:SQL:BatchCompleted (12) 的 TextData(1), SPID(12), Duration(14)
EXEC sp_trace_setevent @TraceID, 12, 1, @on
EXEC sp_trace_setevent @TraceID, 12, 12, @on
EXEC sp_trace_setevent @TraceID, 12, 14, @on
-- 設定過濾器:排除 ApplicationName='SQL Profiler'、Duration>100、DatabaseName='pubs'
EXEC sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler'
EXEC sp_trace_setfilter @TraceID, 22, 0, 4, 100
EXEC sp_trace_setfilter @TraceID, 23, 1, 0, 1
EXEC sp_trace_setfilter @TraceID, 35, 1, 6, N'pubs'
-- 啟動追蹤
EXEC sp_trace_setstatus @TraceID, 1
SELECT TraceID = @TraceID
GOTO finish
error: SELECT ErrorCode = @rc
finish: GO
.sql 檔。sp_trace_create 的檔案路徑參數。SELECT * FROM ::fn_trace_getinfo(0)EXEC sp_trace_setstatus @traceid=1, @status=0EXEC sp_trace_setstatus @traceid=1, @status=2