跟踪标志 (Transact-SQL)

更新日期: 2007 年 9 月 15 日

跟踪标志用于临时设置特定服务器的特征或关闭特定行为。 例如,如果启动 SQL Server 2005 的一个实例时设置了跟踪标志 3205,将禁用磁带机的硬件压缩。 跟踪标志经常用于诊断性能问题,或调试存储过程或复杂的计算机系统。

下表列出了 SQL Server 2005 中可用的跟踪标志,并进行了说明。

ms188396.note(zh-cn,SQL.90).gif注意:
SQL Server 的未来版本可能不支持跟踪标志行为。
跟踪标志 说明

260

打印有关扩展存储过程动态链接库 (DLL) 的版本控制信息。 有关 __GetXpVersion() 的详细信息,请参阅Creating Extended Stored Procedures

作用域:全局或会话

1204

返回参与死锁的锁的资源和类型,以及受影响的当前命令。

作用域:仅全局

1211

基于内存不足或基于锁数禁用锁升级。 SQL Server 2005 数据库引擎不会将行锁或页锁升级到表锁。

使用此跟踪标志可生成过多的锁数目。 这样会降低数据库引擎的性能,或因为内存不足而导致 1204 错误(无法分配锁资源)。 有关详细信息,请参阅锁升级(数据库引擎)

如果同时设置了跟踪标志 1211 和 1224,则 1211 优先于 1224。但由于在所有情况下(甚至在内存紧张的情况下),跟踪标志 1211 都禁止升级,因此建议使用 1224。这有助于在使用多个锁时避免发生“锁不足”错误。

作用域:全局或会话

1222

以不符合任何 XSD 架构的 XML 格式,返回参与死锁的锁的资源和类型,以及受影响的当前命令。

作用域:仅全局

1224

基于锁数禁用锁升级。 但是,内存不足仍可激活锁升级。 如果锁对象使用的内存量超出下列条件之一,则数据库引擎将行锁或页锁升级为表锁:

  • 数据库引擎所用内存的 40%,使用地址窗口化扩展插件 (AWE) 的内存分配除外。 只有在 sp_configurelocks 参数设置为 0 时,这才适用。
  • 使用 sp_configurelocks 参数配置的锁内存的 40%。 有关详细信息,请参阅设置服务器配置选项

如果同时设置了跟踪标志 1211 和 1224,则 1211 优先于 1224。但由于在所有情况下(甚至在内存紧张的情况下),跟踪标志 1211 都禁止升级,因此建议使用 1224。这有助于避免在使用多个锁时发生“锁不足”错误。

作用域:全局或会话

2528

禁用 DBCC CHECKDB、DBCC CHECKFILEGROUP 和 DBCC CHECKTABLE 执行的对象并行检查。 默认情况下,并行度由查询处理器自动确定。 最大并行度的配置就像并行查询的最大并行度一样。 有关详细信息,请参阅 max degree of parallelism 选项

通常应使并行 DBCC 保持启用状态。 对于 DBCC CHECKDB,查询处理器重新求值,并对检查的每个表或每批表自动调整并行度。 有时,检查可能在服务器几乎处于空闲状态时启动。 如果管理员知道在检查完成前负载将增加,则可能需要手动减小并行度或禁用并行度。

但是,禁用并行检查会导致数据库的总体性能降低。 降低并行度将增加必须扫描的事务日志量。 这样又会增加对 tempdb 空间的需求,并导致非线性增加 DBCC 完成其检查所需的时间。 如果运行 DBCC 时启用了 TABLOCK 功能并关闭了并行度,则表可能被锁定更长时间。

作用域:全局或会话

3205

默认情况下,如果磁带机支持硬件压缩,则 DUMP 或 BACKUP 语句会使用该功能。 利用此跟踪标志,可以禁用磁带机的硬件压缩。 此选项在您需要与不支持压缩的其他站点或磁带机交换磁带时很有用。

作用域:全局或会话

3625

限制错误消息中返回的信息量。 有关详细信息,请参阅元数据可见性配置

作用域:仅全局

4616

使应用程序角色可以看到服务器级元数据。 在 SQL Server 2005 中,应用程序角色无法访问自身数据库以外的元数据,因为应用程序角色与服务器级主体不相关联。 这是对早期版本的 SQL Server 的行为的更改。 设置此全局标志将禁用新的限制,并允许应用程序角色访问服务器级元数据。

作用域:仅全局

7806

在 SQL Server Express 上启用专用管理员连接 (DAC)。 默认情况下,在 SQL Server Express 上不保留 DAC 资源。 有关详细信息,请参阅使用专用管理员连接

作用域:仅全局

备注

在 SQL Server 2005 中,有两种跟踪标志:会话和全局。 会话跟踪标志对某个连接是有效的,只对该连接可见。 全局跟踪标志在服务器级别上进行设置,对服务器上的每一个连接都可见。 某些标志只能作为全局标志启用,而某些标志在全局或会话作用域都可以启用。

应遵循以下规则:

  • 全局跟踪标志必须全局启用。 否则,跟踪标志无效。 建议您在启动时通过使用 -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 命令确定哪些跟踪标志当前是活动的。

行为更改

在 SQL Server 2000 中,通过简单的 DBCC TRACEON (1204) 足以将死锁报表记录到错误日志中。 在 SQL Server 2005 中,则必须全局启用标志,这是因为会话级别的标志对死锁监视器线程不可见。

有关行为更改的详细信息,请参阅 SQL Server 2005 中数据库引擎功能的重大更改

示例

以下示例使用 DBCC TRACEON 将跟踪标志 3205 设置为开。

DBCC TRACEON (3205,-1)

请参阅

参考

数据类型 (Transact-SQL)
DBCC INPUTBUFFER (Transact-SQL)
DBCC OUTPUTBUFFER (Transact-SQL)
DBCC TRACEOFF (Transact-SQL)
DBCC TRACEON (Transact-SQL)
DBCC TRACESTATUS (Transact-SQL)
EXECUTE (Transact-SQL)
SELECT (Transact-SQL)
SET NOCOUNT (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2007 年 9 月 15 日

更改的内容:
  • 更正了跟踪标志 1224 的作用域信息。

2006 年 4 月 14 日

新增内容:
  • 添加了对跟踪标志 7806 的说明。
  • 添加了有关跟踪标志 1224 优先于 1211 的信息。
  • 添加了每个跟踪标志的作用域信息。
  • 添加了行为更改。

2005 年 12 月 5 日

新增内容:
  • 添加了跟踪标志 4616 和 3625 的说明。