Sql-Server

SQL Server - 停止伺服器端跟踪

  • October 22, 2015

我想設置一個伺服器端重播跟踪並編寫腳本設置跟踪。但是,我希望跟踪在 12 小時後或創建 10 個 1GB 文件後結束。通常使用最大文件計數,系統會刪除最舊的文件,然後創建新文件。在我的情況下,這將以文件 2-11 而不是所需的 1-10 結束。我有空間限制,需要從頭到尾重播所有步驟。我可以將文件大小限制設置為 10GB。我認為文件大小有 1GB 的限制,但這可能只是 GUI 中的限制。

關於如何在腳本達到 10 個文件後停止腳本的任何想法?

declare @rc int
declare @TraceID int
declare @maxfilesize bigint
declare @DateTime datetime
declare @maxfilecount int

set @DateTime = DATEADD(HOUR,12,GETDATE())
set @maxfilesize = 1024
set @maxfilecount = 10

exec @rc = sp_trace_create @TraceID output, 2, N'D:\Output\Trace', @maxfilesize, @Datetime, @maxfilecount 

我想出了一個辦法。

declare @files table (ID int IDENTITY, FileName varchar(100))
insert into @files execute xp_cmdshell 'dir d:\Output\*.trc /b'

檢查文件計數,如果它在我的限制,然後我查找跟踪 id 並使用 sp_trace_setstatus 來停止它。由於我的跟踪文件需要一段時間才能達到文件大小限制,因此我每 5 或 10 分鐘在代理上執行一次此作業。

當確定沒有時,沒有簡單的方法來停止跟踪。的文件已到達。相反,您可以刪除舊的並保留否。您使用@filecount參數定義的限制中的文件數。

請參閱BOL - sp_trace_create - 您必須使用@filecount='max_rollover_files'以及@options = 2– 指定TRACE_FILE_ROLLOVER

指定使用相同基本文件名維護的最大數量或跟踪文件。max_rollover_files 是 int,大於一。僅當指定了 TRACE_FILE_ROLLOVER 選項時,此參數才有效。指定 max_rollover_files 時,SQL Server 通過在打開新的跟踪文件之前刪除最舊的跟踪文件來嘗試維護不超過 max_rollover_files 個跟踪文件。SQL Server 通過將數字附加到基本文件名來跟踪跟踪文件的使用期限。

我認為文件大小有 1GB 的限制,但這可能只是 GUI 中的限制。

伺服器端跟踪沒有 1GB 的限制。我每小時在我的環境中創建5GB 的跟踪文件。

引用自:https://dba.stackexchange.com/questions/118818