当我查询默认跟踪的配置时,它显示已启用:
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;
什么可以解释没有启用的跟踪?
我想说您的空间不足事件与丢失的痕迹之间存在很强的相关性。请注意,该
sp_configure
选项仅告诉您默认跟踪已启用,但这并不意味着它正在运行或它甚至存在。请注意,这sys.traces
不是表格而是视图:TABLE SYSTRACES
行集提供什么?它是如何工作的?它的结果是如何过滤的?你的猜测和我的一样好。痕迹可能仍然存在,但处于阻止它被此视图暴露的状态。并且它可能处于即使在重新启动服务后仍然无法启动的状态。首先,确保默认跟踪的位置有足够的空间,SQL Server 服务帐户仍然有足够的权限对其进行写入,您不受任何空间配额的限制等。您可以从注册表中获取该位置:
一旦您确定 SQL Server 应该能够写入此文件夹,您就可以禁用并重新启用默认跟踪:
此时您不需要重新启动 SQL Server 服务,但如果您仍然没有在
sys.traces
. 请注意,trace_id
您得到的值不能保证保持在 1。驱动器装满后我遇到了同样的问题。默认跟踪已启用但未运行。禁用它并重新启用它会立即起作用,而无需停止服务。