Bri*_*ins 5 sql-server sql-server-2008-r2 exception
在 SQL Server 中,我收到以下错误“查询已被取消,因为此查询的估计成本 (5822) 超过了配置的阈值 300。请与系统管理员联系。”
这是一个非常复杂的存储过程的执行结果。对于其他存储过程,我还没有遇到过这个问题,只有这个。是否可以以某种方式更改这一过程的查询成本?我可以在执行时在存储过程本身中做到这一点吗?还是我必须只在服务器上定义它?
我正在使用 ADO.NET 命令来执行存储过程。
谢谢。
听起来您遇到了查询调控器成本限制。发生的事情是数据库引擎计算出您的查询将需要 5822 秒(97 分钟)来运行。然而,有人配置了一个设置来终止任何预计运行时间超过 300 秒(5 分钟)的查询。
看看这是否适用于你,exec sp_configure 'query governor cost limit'看看 run_value 是什么。我的想法是它目前设置为 300。
如果您不想全面更改限制,您应该能够通过预先设置限制来运行此查询: set query_governor_cost_limit 0。这将调整特定会话以关闭任何成本限制,因为您知道您的查询将超出限制并且您不太在意。请注意,您需要一些严格的权限才能运行该语句(MSDN 文档说 sysadmin)。
您的管理员已将全局查询调控器成本限制配置为 300(5 分钟)。似乎是一种不错的保护措施,可以防止部署未优化的程序。您部署了这样一个未经优化的程序并被抓住了。您的操作应该是优化程序。找出过程中哪个查询的成本如此之高(成本是每个查询,而不是每个过程),看看你缺少什么索引并修复它。不要问如何规避(合理的)最大值以及如何允许以近 2 小时的估计成本运行查询......
| 归档时间: |
|
| 查看次数: |
1569 次 |
| 最近记录: |