什么是默认跟踪?
默认的SQL Server预定义跟踪,是SQL Server中默认开启的最轻量级跟踪,由5个跟踪文件(.trc)组成,每个文件的最大值为20MB,存储在SQL Server log目录。
这些文件用作临时存储捕获事件的缓存。存储在缓存中的事件一段事件后会被删除。当SQL Server重启后,或者当当前使用的文件达到最大值时,最旧的文件被删除,在忙碌的生产环境,这样的循环缓存会在几分钟内被循环覆盖。
注意:
后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用扩展事件。
默认跟踪的作用是什么?
如何知道谁删除了表?如何跟踪到自动增长事件?如何知道内存使用什么时候变化?安全设置是否改变?
默认跟踪可确保数据库管理员在问题首次出现时即具有诊断该问题所需的日志数据,从而为数据库管理员提供了故障排除帮助。
如何知道默认跟踪是否在运行?
1
|
SELECT * FROM sys.configurations WHERE configuration_id = 1568
|
怎么开启默认跟踪?
使用 default trace enabled 服务器配置选项可启用或禁用默认跟踪日志文件。 默认跟踪功能提供了丰富持久的活动日志,并主要根据配置选项进行更改。
1
2
3
4
5
6
7
8
|
sp_configure 'show advanced options' , 1;
GO RECONFIGURE; GO sp_configure 'default trace enabled' , 1;
GO RECONFIGURE; GO |
如果将 default trace enabled 选项设置为 1,可启用“默认跟踪”。 此选项的默认设置为 1 (ON)。 值为 0 时将关闭跟踪。
default trace enabled 选项是一个高级选项。 如果使用 sp_configure 系统存储过程来更改该设置,则仅当 show advanced options 设置为 1 时才能更改 default trace enabled 选项。 该设置将立即生效,无需重新启动服务器。
可以通过
1
2
|
EXEC sp_configure 'default trace enabled' ,0;
RECONFIGURE WITH OVERRIDE;
|
来关闭默认跟踪。
如何查看默认跟踪文件?
1
|
SELECT * FROM ::fn_trace_getinfo( default )
|
解释一下跟踪属性:
Column name |
Data type |
Description |
traceId |
int |
ID of the trace. |
property |
int |
Property of the trace: 1= Trace options. For more information, see @options in sp_trace_create (Transact-SQL). 2 = File name 3 = Max size 4 = Stop time 5 = Current trace status |
value |
sql_variant |
Information about the property of the trace specified. |
在 SQL Server 的典型安装中,默认跟踪启用并因而成为 TraceID 1。 如果在安装和创建其他跟踪后启用,该 TraceID 可以变成更大的数字。
1
|
SELECT * FROM sys.traces;
|
默认跟踪文件记录了什么?
默认跟踪日志可以通过 SQL Server Profiler 打开和检查,或者通过 Transact-SQL 使用 fn_trace_gettable 系统函数来查询。
SQL Server Profiler 可以像打开正常跟踪输出文件一样打开默认跟踪日志文件。 默认情况下,默认跟踪日志以滚动更新跟踪文件的形式存储在 \MSSQL\LOG 目录中。 默认跟踪日志文件的基本文件名是 log.trc。
当我们用Profiler打开默认跟踪文件,从属性中可以看到有7类捕获的事件:
? Database
? Errors and Warnings
? Full-Text
? Objects
? Performance
? Security Audit
? Server
并且,每一个子类事件的所有可选列为选择状态。
以下语句将打开默认位置中的默认跟踪日志:
1
2
3
4
|
SELECT *
FROM fn_trace_gettable
( 'D:\SQL-DATA\MSSQL10_50.MSSQLSERVER\MSSQL\Log\log_1019.trc' , default );
GO |