每当我运行此查询时:
SELECT trade_detail_id,trade_side_id,id,is_last,is_xml_detail_filled,save_date_time,trade_id,trade_ligne_id,type,xml_detailled_info,xml_state
FROM some_table
WHERE (NOT (is_xml_detail_filled =1))
SQL Server 返回此错误:
消息 8649,级别 17,状态 1,第 12 行
该查询已被取消,因为此查询 (1191) 的估计成本超出了配置的阈值 12。请联系系统管理员。
在 中sp_configure
,查询调节器成本限制设置为 0。
在服务器属性->连接中,“使用查询调节器来防止长时间运行的查询”被禁用。
DBCC USEROPTIONS
没有提到任何内容
那么为什么会出现错误呢?
如果我使用SET QUERY_GOVERNOR_COST_LIMIT
,错误就会消失,但如果没有服务器范围的限制,我就不必在这里使用该命令。
Windows 2019 上的 SQL Server 2019 CU28 实例。
这不涉及资源管理器、用户选项或长时间运行的查询;它是基于估计成本的系统配置(尽管有一个
SET
命令可以为当前会话实现这一点,但我怀疑它不是从那里来的,而且它无论如何也不会出现DBCC USEROPTIONS
)。检查:我猜是
value_in_use
会返回12
(即使value
显示0
,这可能意味着有人更正了值但没有运行RECONFIGURE
)。要更改它,您可以将其设置为0
(无限制)或其他值,> 1191
以便至少可以运行此特定查询。例如:如果不是这个问题,则可能已在 SSMS > 工具 > 选项 > 查询执行 > SQL Server > 高级 > 中设置
SET QUERY_GOVERNOR_COST_LIMIT
,它将覆盖服务器设置:默认值为 0,但如果您已覆盖它来测试某些内容,则它将适用于您的所有会话。如果您无法更改设置或当前无法访问出现此错误的计算机,请尝试从任何其他工作站、服务器本身或从另一个应用程序(C#、PowerShell 等)运行相同的查询。