日期:2013-10-13  浏览次数:20462 次



跟踪标记

一 概述
跟踪标记用于临时设置服务器的特定特征或关闭特定行为

二 分类

1. BOL记载的跟踪标记

       描述
260    打印有关扩展存储过程动态链接库 (DLL) 的版本信息。
       有关 __GetXpVersion() 的更多信息,请参见创建扩展存储过程。

1204   前往参与死锁的锁的类型以及当前受影响的命令。
       补充 此参数将把死锁产生的相关信息(锁类型,SQL查询等)写入Error Log  

2528   通过 DBCC CHECKDB、DBCC CHECKFILEGROUP 和 DBCC CHECKTABLE 禁用对象的并行检查。
       默认情况下,并行度由查询处理器自动确定。最大并行度的配置方式与并行查询相反。
       有关更多信息,请参见 max degree of parallelism 选项。
       通常情况下,应将并行 DBCC 保留为启用形状。执行 DBCC CHECKDB 时,
       查询处理器重新评估和自动调整并行度,并检查每个表或一批表。
       有时,检查可能在服务器处于实际空闲形状时进行。如果管理员知道在检查结束前负荷将加大,
       可能希望手工减小或禁用并行度。

       但是,禁用并行检查会导致数据库的总体功用降低。降低并行度将添加必须扫描的事务日志量。这反过来添加了对 tempdb 空间的需求,并导致 dbcc 完成检查所需的时间非线性添加。如果运转 DBCC 时启用了 TABLOCK 功用并关闭了并行度,则表可能被锁定更长时间。
 
3205   默认情况下,如果磁带驱动器支持硬件紧缩,则 DUMP 或 BACKUP 语句会使用该功用。
       利用此跟踪标记,可以禁用磁带驱动程序的硬件紧缩。
       本项在要与不支持紧缩的其它站点或磁带驱动器交换磁带时有用。


未记载的跟踪标记
8602   可以使SQL SERVER忽略语句中显示声明的指定索引使用

8785   禁用所有显示声明的加索语句(all locking hints)

8722   禁用显示声明的其他类型语句(primary hints in the OPTION clause)

3605   把其他跟踪标记产生的结果写入Error Log


1200   显示详细的锁定信息

1206   通过死锁显示其他锁定信息,来补充1204

2509   与DBCC CHECKTABLE连接来查看叠影记录的全部数量

3502   当检验点触发时记录系统错误日志的额外信息

3607   跳过所无数据库的自动恢复

3608   跳过除主数据库外的所无数据库的自动恢复

8687   使并列查询不能进行
      

三 跟踪标记的使用方法

1. 使用 DBCC TRACEON 设置跟踪标记

示例:8602标记的使用
use northwind
go
select * from [order details] where productid=59
执行计划显示使用聚集索引

如果指定对索引的使用
select * from [order details] (index=productid) where  productid=59
执行计划显示首先扫描非聚集索引,此语句将降低查询效率

如今使用8602忽略对指定索引的使用
DBCC TRACEON (8602)
go
select * from [order details] (index=productid) where  productid=59
执行计划显示曾经忽略了对非聚集索引的使用

2. 企业管理器->服务器名->属性->常规页->启动参数->添加跟踪标记
格式为Txxxx,xxxx--标记代码,确定保存后需求重启SQL服务是改变生效
这样每次启动SQL都会使用预设的跟踪标记


3. 在命令提示符下设置跟踪标记
下例显示如何在命令提示符下打开跟踪标记 3205
sqlservr –d"C:\Program Files\Microsoft SQL Server\MSSQL\Data\master.mdf" –T3205

4. 可以在: 控制面板->服务->MSSQLSERVER->属性->常规->启动参数 中输入

5. 禁用跟踪标记
   DBCC TRACEOFF

四 参看跟踪标记的形状   DBCC TRACESTATUS

   DBCC TRACESTATUS(-1)
   显示当前启用的所有跟踪标记的形状

   DBCC TRACESTATUS (8602)
   显示8602标记的形状

示例:
打开第一个连接 使用DBCC TRACEON (8602)
打开第二个连接 使用DBCC TRACEON (8785)
前往第一个连接 使用DBCC TRACESTATUS(-1)
将看到 TraceFlag  Status
        8602        1
        8785        2