跟踪标志用于临时设置特定服务器的特征或关闭特定行为。例如,如果启动 SQL Server 的一个实例时设置了跟踪标志 3205,将禁用磁带机的硬件压缩。跟踪标志经常用于诊断性能问题,或调试存储过程或复杂的计算机系统。
下表列出了 SQL Server 中可用的跟踪标志,并进行了说明。
260
作用域:全局或会话
1204
作用域:仅全局
1211
使用此跟踪标志可生成过多的锁数目。这样会降低数据库引擎的性能,或因为内存不足而导致 1204 错误(无法分配锁资源)。有关详细信息,请参阅锁升级(数据库引擎)。
如果同时设置了跟踪标志 1211 和 1224,则 1211 优先于 1224。但是,由于在所有情况下(甚至在内存紧张的情况下)跟踪标志 1211 都禁止升级,因此建议使用 1224。这有助于在使用多个锁时避免“锁不足”错误。
作用域:全局或会话
1222
作用域:仅全局
1224
数据库引擎所用内存的 40%,使用地址窗口化扩展插件 (AWE) 的内存分配除外。只有在 sp_configure 的 locks 参数设置为 0 时,这才适用。
使用 sp_configure 的 locks 参数配置的锁内存的 40%。有关详细信息,请参阅设置服务器配置选项。
如果同时设置了跟踪标志 1211 和 1224,则 1211 优先于 1224。但是,由于在所有情况下(甚至在内存紧张的情况下)跟踪标志 1211 都禁止升级,因此建议使用 1224。这有助于在使用多个锁时避免“锁不足”错误。
注意
也可以使用 ALTER TABLE 语句的 LOCK_ESCALATION 选项控制到表级或 HoBT 级粒度的锁升级。
作用域:全局或会话
2528
通常应使并行 DBCC 保持启用状态。对于 DBCC CHECKDB,查询处理器重新求值,并对检查的每个表或每批表自动调整并行度。有时,检查可能在服务器几乎处于空闲状态时启动。如果管理员知道在检查完成前负载将增加,则可能需要手动减小并行度或禁用并行度。
禁用对 DBCC 的并行检查可能导致 DBCC 的完成时间变长,如果运行 DBCC 时启用了 TABLOCK 功能并关闭了并行度,则表可能被锁定更长时间。
作用域:全局或会话
3205
作用域:全局或会话
3226
使用这一跟踪标志,可以取消这些日志条目。如果您频繁地运行日志备份,并且没有任何脚本依赖于这些条目,则这种做法非常有用。
3608
3625
作用域:仅全局
4199
作用域:全局或会话
4616
作用域:仅全局
6527
如果用作一个启动跟踪标志,则永远不生成内存转储。但是,如果使用了其他跟踪标志,则可能会生成内存转储。
如果在正在运行的服务器上启用此跟踪标志,则从此时开始不会自动生成内存转储。但是,如果已经由于 CLR 中的内存不足异常生成了内存转储,则此跟踪标志将没有任何效果。
作用域:仅全局
7806
作用域:仅全局
注释:
在 SQL Server 中,有两种跟踪标志:会话跟踪标志和全局跟踪标志。会话跟踪标志对某个连接是有效的,只对该连接可见。全局跟踪标志在服务器级别上进行设置,对服务器上的每一个连接都可见。某些标志只能作为全局标志启用,而某些标志在全局或会话作用域都可以启用。
应遵循以下规则:
全局跟踪标志必须全局启用。否则,跟踪标志无效。建议您在启动时通过使用 -T 命令行选项启用全局跟踪标志。
如果跟踪标志有全局或会话作用域,则可以用合适的作用域来启用它。在会话级别启用的跟踪标志永远不会影响另一个会话,并且当打开会话的 SPID 注销时,该跟踪标志将失效。
使用以下方法之一可将跟踪标志设置为开或关:
使用 DBCC TRACEON 和 DBCC TRACEOFF 命令。
以 DBCC TRACEON 2528 为例,若要在全局作用域内启用跟踪标志,请在使用 DBCC TRACEON 时使用 -1 参数:DBCC TRACEON (2528, -1)。若要关闭全局跟踪标志,请在使用 DBCC TRACEOFF 时使用 -1 参数。
使用 -T 启动选项可以指定跟踪标志在启动期间设置为开。
-T 启动选项将全局启用跟踪标志。使用启动选项无法启动会话级别的跟踪标志。有关启动选项的详细信息,请参阅使用 SQL Server 服务启动选项。
使用 DBCC TRACESTATUS 命令确定哪些跟踪标志当前是活动的。