我想要设置一个服务器端重放跟踪并编写脚本来设置跟踪。但是,我希望在12小时后或在创建了10 1GB文件之后结束跟踪。通常,使用最大文件计数,系统将删除最老的文件,然后创建新文件。在我的情况下,这将结束于我有文件2-11,而不是期望的1-10。我有空间限制,需要重播所有步骤从开始到结束。我可以将文件大小限制设置为10 to。我认为文件大小有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 发布于 2015-10-22 08:31:20
我想出了个办法。
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分钟在代理上运行这项工作。
发布于 2015-10-21 20:52:35
没有什么容易的方法来阻止跟踪时,确定不是。文件已经到达。相反,您可以删除旧的,并保留不。使用@filecount参数定义的限制中的文件。
参考波尔- sp_跟踪_创建 -您必须使用@filecount = 'max_rollover_files'和@options = 2 -指定TRACE_FILE_ROLLOVER
指定要用相同的基文件名维护的最大数量或跟踪文件。max_rollover_files是int,大于1。只有当指定了TRACE_FILE_ROLLOVER选项时,此参数才有效。当指定max_rollover_files时,Server在打开新跟踪文件之前试图通过删除最老的跟踪文件来维护max_rollover_files跟踪文件。Server通过在基本文件名后添加一个数字来跟踪跟踪文件的历史。
--
我认为文件大小有1GB的限制,但这可能只是GUI中的一个限制。
服务器端跟踪没有1GB的限制。我每小时在我的环境中创建5GB跟踪文件。
https://dba.stackexchange.com/questions/118818
复制相似问题