sp_trace_create (Transact-SQL)

適用範圍: 是SQL Server (所有支援的版本)

建立追蹤定義。 新追蹤會處於已停止狀態。

重要

未來的 Microsoft SQL Server 版本將移除這項功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用擴充事件。

主題連結圖示 Transact-SQL 語法慣例

語法

  
sp_trace_create [ @traceid = ] trace_id OUTPUT   
          , [ @options = ] option_value   
          , [ @tracefile = ] 'trace_file'   
     [ , [ @maxfilesize = ] max_file_size ]  
     [ , [ @stoptime = ] 'stop_time' ]  
     [ , [ @filecount = ] 'max_rollover_files' ]  

引數

[ @traceid = ] trace_id 這是指派給 Microsoft SQL Server 新追蹤的號碼。 系統會忽略任何使用者所提供的輸入。 trace_idint,預設值是 Null。 使用者會使用 trace_id 值來識別、修改和控制這個預存程式所定義的追蹤。

[ @options = ] option_value 指定追蹤所設定的選項。 option_valueint,沒有預設值。 使用者可以指定所取用選項的總值,來選擇這些選項的組合。 例如,若要開啟 TRACE_FILE_ROLLOVER 和 SHUTDOWN_ON_ERROR 的選項,請針對 option_value 指定 6

下表列出選項、描述及其值。

選項名稱 選項值 描述
TRACE_FILE_ROLLOVER 2 指定當達到 max_file_size 時,將會關閉目前的追蹤檔案,並建立新的檔案。 所有新記錄都會寫入新檔案中。 新檔案與先前的檔案同名,但會附加一個整數來表示順序。 例如,如果原始追蹤檔的名稱是 filename.trc,下一個追蹤檔的名稱就是 filename_1.trc,再下一個追蹤檔的名稱就是 filename_2.trc,依此類推。

在建立換用追蹤檔時,檔案名稱所附加的整數值也會循序增加。

如果指定此選項,但未指定 max_file_size 的值,SQL Server 會使用預設值 max_file_size (5 MB) 。
SHUTDOWN_ON_ERROR 4 指定追蹤因故無法寫入檔案時,SQL Server 便關機。 當執行安全性稽核追蹤時,這個選項非常有用。
TRACE_PRODUCE_BLACKBOX 8 指定伺服器將所產生最後 5 MB 的追蹤資訊記錄儲存起來。 TRACE_PRODUCE_BLACKBOX 與所有其他選項不相容。

[ @tracefile = ] 'trace_file' 指定將寫入追蹤的位置和檔案名。 trace_fileNvarchar (245) 沒有預設值。 trace_file 可以是本機目錄 (例如 n ' C:\MSSQL\Trace\trace.trc ' ) 或 UNC 至共用或路徑 (N ' \ \ Servername \ 共用 \ 目錄\trace.trc ' ) 。

SQL Server 會將 >flightrecordercurrent.trc 副檔名附加至所有追蹤檔案名。 如果指定了 TRACE_FILE_ROLLOVER 選項和 max_file_size , SQL Server 當原始的追蹤檔案成長到其大小上限時,就會建立新的追蹤檔案。 新檔案與原始檔案的名稱相同,但會附加 _ n 以表示其順序,從 1 開始。 例如,如果第一個追蹤檔的名稱是 >flightrecordercurrent.trc,則第二個追蹤檔的名稱為 filename_1. >flightrecordercurrent.trc

如果使用了 TRACE_FILE_ROLLOVER 選項,建議您不要在原始追蹤檔名稱中使用底線字元。 若您使用底線字元,便會發生下列行為:

  • SQL Server Profiler 如果) 這些檔案換用選項的其中一個設定,則不會自動載入或提示您載入換用檔案 (。

  • Fn_trace_gettable 函式在使用 number_files 自) 變數指定時,不會載入換用檔案 (,其中原始檔案的名稱結尾為底線和數值。 (若為檔案換用時自動附加的底線及數值,則不在此列)。

注意

為了因應以上兩種行為,您可以重新命名檔案,移除原始檔案名稱中的底線。 例如,如果原始檔案名為 my_trace >flightrecordercurrent.trc,而換用檔案的 my_trace_1 名稱為 >flightrecordercurrent.trc,您可以將檔案重新命名為 mytrace. >flightrecordercurrent.trcmytrace_1. >flightrecordercurrent.trc ,然後再開啟中的檔案 SQL Server Profiler 。

使用 TRACE_PRODUCE_BLACKBOX 選項時,無法指定 trace_file

[ @maxfilesize = ] max_file_size 指定追蹤檔案可以成長的大小上限(以 mb 為單位)) (MB。 max_file_sizeBigint,預設值是 5

如果指定此參數但未指定 TRACE_FILE_ROLLOVER 選項,當使用的磁碟空間超過 max_file_size 指定的數量時,追蹤就會停止記錄至檔案。

[ @stoptime = ] 'stop_time' 指定追蹤將停止的日期和時間。 stop_timedatetime,預設值是 Null。 如果是 NULL,追蹤就會執行到手動停止或伺服器關機為止。

如果同時指定 stop_timemax_file_size ,而且未指定 TRACE_FILE_ROLLOVER,則在達到指定的停止時間或最大檔案大小時,就會進行追蹤。 如果指定 stop_timemax_file_size 和 TRACE_FILE_ROLLOVER,則追蹤會在指定的停止時間停止,並假設追蹤未填滿磁片磁碟機。

[ @filecount = ] 'max_rollover_files' 指定要使用相同的基底檔案名來維護的最大數目或追蹤檔案。 max_rollover_filesint,大於1。 只有在指定了 TRACE_FILE_ROLLOVER 選項時,這個參數才有效。 當指定 max_rollover_files 時,會在 SQL Server 開啟新的追蹤檔案之前,先刪除最舊的追蹤檔,嘗試維持不超過 max_rollover_files 的追蹤檔案。 SQL Server 會在基礎檔案名稱上附加數字來追蹤這些追蹤檔的存在時間。

例如,當 trace_file 參數指定為 "c:\mytrace" 時,名稱為 "c:\ mytrace_123. >flightrecordercurrent.trc" 的檔案會早于名稱為 "c:\ mytrace_124. >flightrecordercurrent.trc" 的檔案。 如果 max_rollover_files 設定為2,則 SQL Server 在建立追蹤檔 "c:\ mytrace_125. >flightrecordercurrent.trc" 之前刪除 "c:\ mytrace_123. >flightrecordercurrent.trc" 檔案。

請注意,SQL Server 只會嘗試刪除各個檔案一次,且無法刪除有其他程序在使用的檔案。 因此,如果您在進行追蹤時,有另一個應用程式在使用追蹤檔,SQL Server 會將這些追蹤檔保留在檔案系統中。

傳回碼值

下表描述在預存程序完成之後,使用者可能得到的代碼值。

傳回碼 描述
0 沒有錯誤。
1 未知的錯誤。
10 無效的選項。 當指定的選項不相容時,便傳回這個代碼。
12 未建立檔案。
13 記憶體不足。 當沒有足夠的記憶體可以執行指定的動作時,便傳回這個代碼。
14 無效停止時間。 當指定的停止時間已發生過時,便傳回這個代碼。
15 無效的參數。 當使用者提供不相容的參數時,便傳回這個代碼。

備註

sp_trace_create 是一種 SQL Server 預存程式,它會執行先前 xp_trace_ _ 擴充預存程式所執行的許多動作( * 可在舊版的 SQL Server 中使用)。使用 _ sp_trace_create 取代:

  • xp_trace_addnewqueue

  • xp_trace_setqueuecreateinfo

  • xp_trace_setqueuedestination

sp_trace_create 只會建立追蹤定義。 您無法利用這個預存程序來啟動或變更追蹤。

所有 SQL 追蹤預存程式 (sp_trace_xx) 的參數都是嚴格類型。 如果沒有依照引數描述所指定,以正確的輸入參數資料類型來呼叫這些參數,預存程序會傳回錯誤。

針對 sp_trace_create, SQL Server 服務帳戶必須具有追蹤檔案資料夾的寫入權限。 如果 SQL Server 服務帳戶不是追蹤檔所在電腦的管理員,您就必須將寫入權限明確授與 SQL Server 服務帳戶。

注意

您可以使用 fn_trace_gettable 系統函數,自動將使用 sp_trace_create 建立的追蹤檔案載入資料表中。 如需有關如何使用這個系統函數的詳細資訊,請參閱sys.fn_trace_gettable (SQL transact-sql)

如需使用追蹤預存程序的範例,請參閱建立追蹤 (Transact-SQL)

TRACE_PRODUCE_BLACKBOX 具有下列特性:

  • 這是換用追蹤。 預設 file_count 為2,但使用者可以使用 filecount 選項來覆寫此預設值。

  • 預設 file_size 與其他追蹤相同是 5 MB,而且可以變更。

  • 不可指定任何檔名。 檔案將儲存為: N '%SQLDIR%\MSSQL\DATA\blackbox.trc '

  • 追蹤中只會包含下列事件及其資料行:

    • RPC starting

    • Batch starting

    • 例外狀況

    • 注意

  • 無法從這項追蹤加入或移除事件或資料行。

  • 無法針對這項追蹤指定篩選器。

權限

使用者必須有 ALTER TRACE 權限。

另請參閱

sp_trace_generateevent (SQL transact-sql)
sp_trace_setevent (Transact-SQL)
sp_trace_setfilter (Transact-SQL)
sp_trace_setstatus (Transact-SQL)
SQL 追蹤