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

SQL Server Profiler 追蹤腳本產生與 T-SQL 追蹤管理實務 (注意:非 Oracle 功能)

     編輯:Oracle 資料庫基礎

重要提示

本文內容為 Microsoft SQL Server 的 Profiler 追蹤腳本產生與管理,非 Oracle 資料庫功能。原文標題標示 Oracle 可能為誤植。Oracle 對應功能請參考 DBMS_MONITOR、DBMS_TRACE 或 10046 事件。

一、Profiler 產生之完整追蹤腳本範例


/****************************************************/
/* Created by: SQL Profiler                         */
/* Date: 2004/06/19 16:50:05                        */
/****************************************************/
DECLARE @rc INT, @TraceID INT, @maxfilesize BIGINT;
SET @maxfilesize = 5;  -- MB
EXEC @rc = sp_trace_create @TraceID OUTPUT, 0, N'c:\test', @maxfilesize, NULL;
IF (@rc != 0) GOTO error;

DECLARE @on BIT = 1;
-- 事件 12: SQL:BatchStarting
EXEC sp_trace_setevent @TraceID, 12, 1, @on;   -- TextData
EXEC sp_trace_setevent @TraceID, 12, 12, @on;  -- SPID
EXEC sp_trace_setevent @TraceID, 12, 14, @on;  -- StartTime

-- 過濾器
DECLARE @intfilter INT, @bigintfilter BIGINT;
EXEC sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler'; -- ApplicationName
SET @intfilter = 100;
EXEC sp_trace_setfilter @TraceID, 22, 0, 4, @intfilter;      -- CPU >= 100
SET @intfilter = 1;
EXEC sp_trace_setfilter @TraceID, 23, 1, 0, @intfilter;      -- DatabaseID = 1
EXEC sp_trace_setfilter @TraceID, 35, 1, 6, N'pubs';         -- DatabaseName = pubs

-- 啟動追蹤
EXEC sp_trace_setstatus @TraceID, 1;
SELECT TraceID = @TraceID;
GOTO finish;
error: SELECT ErrorCode = @rc;
finish: GO

二、最簡產生腳本流程

  1. 開啟 SQL Profiler → 設定事件/欄位/過濾器
  2. 啟動追蹤驗證無誤
  3. File → Export → Script Trace Definition → 選擇 SQL Server 版本
  4. 開啟產生的 .sql 檔,修改 sp_trace_create 的檔案路徑參數
  5. 需追蹤時在 SSMS 執行此腳本即可背景運行

三、常見管理指令

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

四、已知限制

  1. 追蹤資料非即時寫入檔案,停止追蹤時才可能完整寫入
  2. 檔案最大值到達會自動停止 (若建立時指定)
  3. 大量追蹤會影響效能,生產環境謹慎使用

Oracle 開發者對照參考

SQL ServerOracle 對應
sp_trace_createDBMS_MONITOR.SESSION_TRACE_ENABLE / 10046 Event
sp_trace_seteventWAITS/BINDS 參數控制
sp_trace_setfilterMODULE/ACTION/CLIENT_ID 過濾
fn_trace_getinfoV$SESSION / DBA_ENABLED_TRACES
trc 檔案.trc 檔案 (USER_DUMP_DEST)
Profiler GUIOEM / SQL Developer / Trace Analyzer
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved