Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询已取消,因为此查询的估计成本超过了配置的阈值_Sql_Sql Server_Sql Server 2005_Tsql - Fatal编程技术网

Sql 查询已取消,因为此查询的估计成本超过了配置的阈值

Sql 查询已取消,因为此查询的估计成本超过了配置的阈值,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,查询已取消,因为此查询的估计成本(1660)超过配置的阈值1500。请与系统管理员联系 运行其中一个存储过程线程时,我在live上遇到如上所述的错误,其中参数包含XML变量 我已经检查了QUERY\u GOVERNOR\u COST\u LIMIT的配置值设置为1500。 为了解决这个问题,我在存储过程中添加了SET QUERY\u GOVERNOR\u COST\u LIMIT 0。它工作得很好 当我在后端使用和不使用SET QUERY\u GOVERNOR\u COST\u LIMIT 0语

查询已取消,因为此查询的估计成本(1660)超过配置的阈值1500。请与系统管理员联系

运行其中一个存储过程线程时,我在live上遇到如上所述的错误,其中参数包含XML变量

我已经检查了
QUERY\u GOVERNOR\u COST\u LIMIT
的配置值设置为1500。 为了解决这个问题,我在存储过程中添加了
SET QUERY\u GOVERNOR\u COST\u LIMIT 0
。它工作得很好

当我在后端使用和不使用
SET QUERY\u GOVERNOR\u COST\u LIMIT 0
语句运行存储过程时,它运行正常,并在0秒内运行。 但它给.Net应用程序带来了问题,并导致了错误

那么,为什么它在应用程序中给出错误,而不是在SQL查询分析器中给出错误呢? 即使是查询也会在0秒内运行,因为当执行时间超过15秒时(如配置的
query\u GOVERNOR\u COST\u LIMIT 1500
),它也会出错


请分享您对分析和解决方案的想法。

通常发生这种情况是因为SSMS和.net的默认ANSI设置不同 他们可以创建不同的执行计划。 首先需要检查两个来源的执行计划。
您可以使用sql profiler的

来实现这一点,这通常是因为SSMS和.net的默认ANSI设置不同 他们可以创建不同的执行计划。 首先需要检查两个来源的执行计划。
您可以使用sql profiler的

实现这一点,这可能是因为SET ARITHABORT已从.NET关闭


也可能是转换问题,看看你的执行计划,你是否看到任何转换。您是如何从.NET执行此操作的?您是否使用了正确的数据类型?

可能是因为SET ARITHABORT已从.NET关闭


也可能是转换问题,看看你的执行计划,你是否看到任何转换。您是如何从.NET执行此操作的?您是否使用了正确的数据类型?

QUERY\u GOVERNOR\u COST\u LIMIT是连接级别的运行时设置。因此,在建立连接时,需要对其进行设置。在SSMS查询窗口中进行测试时,需要在查询选项属性窗口中设置此设置(在查询窗口内单击鼠标右键,查询选项,前进…)

您还提到查询执行时间为0秒,那么为什么即使从.NET中也会出现设置为15秒的错误呢?因为该设置基于估计的查询执行成本,而不是实际的查询执行成本。所以正确的问题是,为什么SQLServer估计执行成本超过15秒。?这个问题没有单一的答案


虽然我想知道您实际需要使用此设置的用户工作流程/情况。很多时候,估计成本与实际成本相差很大,所以除非开发人员/数据库管理员确切地知道他们正在做什么以及将要执行什么。。。看起来我不了解此设置的实际用法。

查询\u调控器\u成本\u限制是连接级别运行时设置。因此,在建立连接时,需要对其进行设置。在SSMS查询窗口中进行测试时,需要在查询选项属性窗口中设置此设置(在查询窗口内单击鼠标右键,查询选项,前进…)

您还提到查询执行时间为0秒,那么为什么即使从.NET中也会出现设置为15秒的错误呢?因为该设置基于估计的查询执行成本,而不是实际的查询执行成本。所以正确的问题是,为什么SQLServer估计执行成本超过15秒。?这个问题没有单一的答案

虽然我想知道您实际需要使用此设置的用户工作流程/情况。很多时候,估计成本与实际成本相差很大,所以除非开发人员/数据库管理员确切地知道他们正在做什么以及将要执行什么。。。看起来我不明白这个设置的实际用途