我已经搜索了很长时间,但仍然找不到我的问题的答案。
我们的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年