首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

使用 T-SQL 指令建立與管理 SQL Server 追蹤

     編輯:關於SqlServer

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

最簡產生腳本法

  1. 用 Profiler 手動建立追蹤並設定好事件/過濾器,啟動執行。
  2. 選單「檔案」→「匯出」→「追蹤定義」→ 選擇 SQL 版本儲存為 .sql 檔。
  3. 編輯檔案,修改 sp_trace_create 的檔案路徑參數。
  4. 需要時執行該腳本即可啟動追蹤(背景執行,可關閉查詢視窗)。

常用管理指令

  • 查看目前追蹤:SELECT * FROM ::fn_trace_getinfo(0)
  • 停止追蹤(保留定義):EXEC sp_trace_setstatus @traceid=1, @status=0
  • 關閉並釋放:EXEC sp_trace_setstatus @traceid=1, @status=2

已知限制

  1. 追蹤資料非即時寫入檔案,停止追蹤時才可能完整寫入。
  2. 追蹤結果僅能儲存至檔案,無法直接寫入資料表。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved