默认跟踪已启用但未激活


9

当我查询默认跟踪的配置时,它显示已启用:

exec sp_configure 'default trace enabled';
-->
name                    minimum  maximum  config_value  run_value
default trace enabled         0        1             1          1

但是当我查询sys.traces路径时,它返回一个空行集:

select * from sys.traces;

有什么可以解释缺少启用的跟踪的原因?


@AaronBertrand:select * from sys.traces返回一个空行集
Andomar

我也听说过跟踪消失的情况是因为它正在写入的驱动器被填满(除非以明显/相关的方式,否则不一定会影响SQL Server)。
阿龙贝特朗

@AaronBertrand:管理员说几天前硬盘确实装满了。重新启动SQL Server服务还会重新启动默认跟踪吗?
Andomar

跟踪停止也是我的第一个,但是又EXEC sp_trace_setstatus @traceid = 1, @status = 0带回来了,The default trace cannot be stopped or modified.因此不确定是否可以停止跟踪,除非有错误阻止它运行。错误日志中有任何内容吗?
马丁·史密斯

@Martin是的,您无法手动停止默认跟踪。
亚伦·伯特兰

Answers:


13

我要说的是,您的空间不足事件与丢失的踪迹之间存在很强的相关性。请注意,该sp_configure选项仅告诉您已启用默认跟踪,但这并不意味着它正在运行或什至存在。请注意,这sys.traces不是表,而是视图:

create view sys.traces as select * from OpenRowset(TABLE SYSTRACES)

什么是TABLE SYSTRACES行集提供?它是如何工作的?如何过滤结果?你的猜测和我的一样。轨迹可能仍在那儿,但处于防止其被该视图暴露的状态。而且即使重新启动服务后,它仍处于无法启动的状态。

首先,请确保默认跟踪的位置具有足够的空间,SQL Server服务帐户仍具有足够的权限对​​其进行写入,您不受任何空间配额的限制,等等。您可以从注册表中获取该位置:

HKEY_LOCAL_MACHINE\Software\Microsoft\...YourInstance...\Setup\SQLDataRoot\

一旦确定SQL Server应该能够写入此文件夹,就可以禁用并重新启用默认跟踪:

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 0;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 1;
GO
RECONFIGURE WITH OVERRIDE;

此时您不需要重新启动SQL Server服务,但是如果您仍然看不到,则可能是SQL Server的最后选择sys.traces。请注意,trace_id您获得的保证并不能保持在1。


谢谢,禁用并重新启用工作。我没用with override。错误日志的确显示了空间不足事件。
Andomar

1
@Andomar对不起,with override是习惯。
亚伦·伯特兰

1

驱动器装满后,我遇到了同样的问题。默认跟踪已启用但未运行。禁用它并重新启用它可以立即起作用,而无需停止服务。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.