在SQL Server中查找新的跟踪标志的方法


38

那里有很多跟踪标志。有些文档有据可查,有些则没有,而另一些在2016版本中已找到默认行为状态。除了官方支持渠道,Microsoft员工等以外,还有什么方法可以找到新的跟踪标志?

我在这里这里都阅读了Aaron Bertrand最近的几篇文章,但没有发现有关新的Trace Flags的任何信息。

我将mssqlsystemresource的数据和日志文件复制到一个新位置,并将其像常规数据库一样附加到系统表和视图中,但没有立即发现任何东西。我考虑过列出一个已知的跟踪标志列表,并循环访问该列表中未列出的数字,以查看DBCC TRACEON允许使用哪些标志,但是我想先在这里提出问题。

假设启用它们的DBCC命令必须使用一些资源进行检入以确保跟踪标志有效,那么该跟踪标志可以到达何处?是否存在包含列表的.dll或其他系统文件?

我知道这个问题产生了广泛的影响,但是,这促使人们阅读有关具有特定预期行为的跟踪标志以及2016年的新功能(未达到上述效果)的情况。我最初的想法是,数字可能会以某种方式进行转置,例如7129变成7219。我希望获得一个在7000-7999范围内的有效跟踪标志的列表,以查找排列。将它们作为DBCC TRACEON标志和启动参数进行全部测试,并结合针对功能特性的结果进行测试非常麻烦。

Answers:


42

除了询问或从帖子/幻灯片组/等等中挑选出来,您什么也找不到列表。该列表仅存在于代码中的头文件中,在该头文件中,有效的跟踪标志号被映射到C ++代码中一个大枚举中的名称,然后在其余的代码中使用这些名称。

正如Aaron所说,您可以启用任何跟踪标记号,并且如果它不执行任何操作,或者不使用跟踪标记所具有的功能,则不会发现行为上的任何差异。

DBCC TRACEON 不检查任何内容-由于没有运行时列表中的有效数字或无效数字-它只是在位图中为该连接/全局设置了哪些标志而启用了跟踪标志号。

进行有效性检查的问题是,它将暴露哪些跟踪标志有效,从而允许发现它们。这样有效地混淆了“有效列表”,这就是SQL团队想要的。

关于Kin在评论中建议SQL Server应该具有select * from sys.available_trace_flags-是和否。有许多跟踪标记对性能有很大影响,并且仅在产品支持的指导下调试问题才是必需的,但是SQL Server可以列出“安全”标记。


2
一个小的调整-DBCC TRACEON确实检查了某些内容。该要点显示了从1开始循环遍历跟踪标志的代码。所有当前版本的SQL Server都会中断,并在最大当前跟踪标志数处引发错误:gist.github.com/BrentOzar/0e9692da8ceffeb2b4bdd064e36d3174
Brent Ozar

41

查找新的跟踪标志的方法是什么?

在大多数情况下,这取决于花时间和情感资源来寻找它们。

当然,可以编写一个脚本来遍历可能的跟踪标志号并分析其效果,但这并不总是富有成效的。造成这种情况的原因有很多,但是常见的挫败感包括以下事实:某些跟踪标志仅与其他跟踪标志结合使用才有效,有些跟踪标志仅-T在启动时使用,或者与一起使用时DBCC TRACEON,有些仅与一起使用OPTION (QUERYTRACEON)。有些需要未记录的命令或命令扩展,或者还需要启用特定功能。有些只有在知道在哪里寻找效果时才会产生效果。依此类推…… 非常 ……依此类推。

就是说,最有效的技术也许就是通过连接调试器或其他性能分析工具逐步执行特定查询或命令,比较打开和关闭的跟踪标记所采用的路径。如果这听起来很耗时,那是因为。

对我来说,某些事情可能非常有趣,或者与现实世界中的问题相关,而没有更好的解决方案供我考虑。如果您已经经历了数百或数千次此过程,这对于您正在寻找的东西有广泛的感觉,最可能有效的跟踪标志范围以及哪一部分是有用的。的代码库将会很有趣。

在简单情况下,设置断点CSessionTraceFlags::CheckSessionTraceInternal并检查edx寄存器的值(以查看正在检查哪个跟踪标志)可能很有用,但是有趣的情况并不总是那么简单-并非所有跟踪标志都在它们检查的点进行检查影响采用的代码路径。

官方跟踪标志的列表很少。这些标志已经过全面测试,并且(并且将)由CSS以及最终由产品开发人员支持。它们也是具有足够普通用例的标记,值得记录。

您发现的任何其他跟踪标志都是一种好奇心,在各种情况下(不同的内部版本,SKU,安全设置,不同的功能……您可能想到或想到的其他任何东西),都可能产生意想不到的影响。这些将仅由撰写这些内容的人“支持”(如果有的话)。

有几个非正式的列表,我所知道的最好的列表是Aaron Morelli撰写的“ SQL Server标志主题集合”(当前于2016年4月,v6)。

综上所述,Microsoft CSS可以(最终)访问所有跟踪标志,因此即使您不在官方列表中,它们也可以为您提供建议。当然,他们可能选择不说话,并且可能要收费。我真的不知道,我自己从来没有走过那条路。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.