Sql 查询已取消,因为此查询的估计成本超过了配置的阈值
查询已取消,因为此查询的估计成本(1660)超过配置的阈值1500。请与系统管理员联系 运行其中一个存储过程线程时,我在live上遇到如上所述的错误,其中参数包含XML变量 我已经检查了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语
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秒。?这个问题没有单一的答案 虽然我想知道您实际需要使用此设置的用户工作流程/情况。很多时候,估计成本与实际成本相差很大,所以除非开发人员/数据库管理员确切地知道他们正在做什么以及将要执行什么。。。看起来我不明白这个设置的实际用途