跟踪标记
一 概述
跟踪标记用于临时设置服务器的特定特征或关闭特定行为
二 分类
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