首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个复杂的存储过程会导致估计成本异常。

一个复杂的存储过程会导致估计成本异常。
EN

Database Administration用户
提问于 2012-11-21 13:27:10
回答 2查看 1.6K关注 0票数 5

在Server中,我得到以下错误:“由于此查询的估计成本(5822)超过了配置的300阈值,查询已被取消。请与系统管理员联系。”

这是存储过程执行的结果,这非常复杂。对于其他存储过程,我没有遇到这种情况,只有这个。是否有可能以某种方式更改这一过程的查询成本?在执行时,我可以在存储过程本身中这样做吗?还是我必须只在服务器上定义这个?

我使用ADO.NET命令来执行存储过程。

谢谢。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2012-11-21 13:50:27

听起来你好像遇到了查询调控器成本限制。正在发生的情况是,数据库引擎显示您的查询将需要5822秒(97分钟)才能运行。但是,有人已经配置了一个设置,以杀死任何预期运行超过300秒(5分钟)的查询。

要查看这是否适用于您,exec sp_configure 'query governor cost limit',并查看该run_value是什么。我的想法是,它现在被设置为300。

如果您不想全面更改限制,您应该能够通过预先设定限值set query_governor_cost_limit 0运行这个查询。这将调整特定的会话以关闭任何成本限制,因为您知道您的查询会超出限制,您不会太在意。请注意,运行该语句需要一些严肃的权限( MSDN文档说sysadmin)。

票数 5
EN

Database Administration用户

发布于 2012-11-21 13:57:28

管理员已将全局查询调控器成本限制配置为300 (5分钟)。似乎是一个不错的保护,以防止未优化的过程正在部署。您已经部署了这样一个未优化的过程,并被捕获。你的行动应该是优化程序。找出过程中的哪个查询有如此高的成本(成本是每个查询,而不是每个过程),查看您缺少的索引并修复它。不要问如何规避(合理的)最大值,以及如何允许使用估计成本近2小时的查询.

票数 5
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/29055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档