我已经阅读了Aaron Bertrand here和here最近的一些帖子,但没有发现任何有关新Trace Flags的信息.当在一篇博客文章的评论中被问到时,保罗怀特用一个SMILEY FACE以密码方式回答“我去寻找他们”.
我将mssqlsystemresource的数据和日志文件复制到一个新位置,并像普通数据库一样将其附加到系统表和视图中,但没有立即发现任何内容.我考虑了一个已知的跟踪标志列表,并循环不在该列表上的数字,看看DBCC TRACEON允许哪些,但是想先在这里提出问题.
假设启用它们的DBCC命令必须使用某些资源签入以确保跟踪标志有效,它在哪里可以找到?是否有.dll或其他系统文件包含列表?
我知道这个问题引起了广泛的关注,但刺激这一点的是阅读有关具有特定预期行为的跟踪标记以及2016年未具有描述效果的新功能.我最初的想法是,数字可能会以某种方式转换,例如7129变为7219.我希望获得一个范围内的有效跟踪标记列表,例如7000-7999,以查找排列.对它们进行全部测试,无论是作为DBCC TRACEON标志还是启动参数都会非常麻烦,并且会根据功能行为测试结果.
解决方法
正如Aaron所说,你可以启用任何跟踪标志号,如果它没有做任何事情,或者你没有运用跟踪标志相关的功能,你将不会注意到任何行为上的差异.
DBCC TRACEON不检查任何内容 – 因为没有运行时列表,哪些数字有效或无效 – 它只是在位图中启用跟踪标志号,为该连接/全局设置哪些标志.
进行有效性检查的问题是会暴露哪些跟踪标志有效,从而允许它们被发现.这样,“有效列表”就会被有效地混淆,这是sql团队想要的.
关于Kin的评论建议,sql Server应该从sys.available_trace_flags中选择* – 是和否.有许多跟踪标志对性能非常不利,只有在产品支持指导下调试问题时才需要,但sql Server可以列出“安全”标志.