T-SQL-选项(FAST x)和跟踪标志8722


9

我已经搜索了很长时间,但仍然找不到我的问题的答案。

我们的Dynamics AX生成带有查询提示OPTION(FAST x)的查询,有时会强制使用错误的执行计划。开发人员说这是默认设置,很难更改(可能会固定在所有表格上)。

因此,我正在寻找一种使用跟踪标志覆盖这些提示的方法。我发现了可爱的跟踪标志8722,据称它使SQL Server忽略了某些查询提示,尤其是OPTION子句中的那些。

但是,这对我来说不起作用。我也尝试启用跟踪标志8602(禁用索引提示),但我的查询仍在使用FAST x提示运行(这比我实际删除OPTION子句时要慢得多)。

我也尝试清除计划缓存,但无济于事。

有任何想法吗?我有什么想念的吗?

PS我全局启用了跟踪标志,这是SQL Server 2012 Developer版本


1
您是如何打开跟踪标志的?您是通过服务器启动还是使用dbcc traceon来打开它的?dbcc traceon是每个连接跟踪标志,因此在一个客户端连接中将其打开不会影响其他服务器连接。要在服务器范围内启用它,您需要在启动命令行中添加-T <traceflagnumber>。我相信您也许可以使用dbcc traceon(flag1,flag2,...,-1)在服务器范围内应用它,但我从未尝试过。
2014年

嗨,迈克,我确实使用DBCC TRACEON(8722,-1)全局启用了跟踪标志,然后使用DBCC TRACESTATUS检查了状态。也许不再正式支持跟踪标志,或者我实际上需要将其放入启动参数中并重新启动服务,或者它是CU3(我正在运行2012 SP2 RTM)的主题。

Answers:


10

据我所知,跟踪标志8722、8755和8602从未正式记录过。我最后一次记得它们有效是在SQL Server 2000中,因此发现它们在SQL Server 2012中被忽略也就不足为奇了。

对于特定的查询模式,通常可以FAST n使用计划指南删除提示。即使这样,最好的解决方法是让AX开发人员在应用程序方面进行修复。

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.