如何有效地解决此错误?
查询处理器在查询优化期间耗尽了堆栈空间。 请简化查询。
Msg 8621,Level 17,State 2
我试图附加分析,但我不确定我是否选择了正确的消息。我确实看到了错误。估计执行计划也会出现此错误。
我正在调用的sproc只是在一个表上执行一个非常简单的UPDATE
。有一个UPDATE
触发器,但我禁用了它,但它仍然给我这个错误。我甚至拿出相同的UPDATE
语句并手动提供了值。它没有快速返回,仍然给我错误。
修改 好的,我生成的脚本正在设置PK。因此,如果我设置PK和另一列,我会收到此错误。这些方面有什么建议吗?
答案 0 :(得分:4)
There's a microsoft KB article about this.
基本上这是一个错误,你需要更新。我假设您正在运行SQL Server 2005 sp2?
答案 1 :(得分:0)
与表相关的外键数量超过Microsoft建议的最大值253时,经常会出现此错误。
您可以通过以下代码行临时禁用约束:
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
您的删除/更新命令
并在执行命令后,按如下所示再次启用它:
EXEC sp_MSforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
希望有帮助。
答案 2 :(得分:-1)
这个PK引用了大量的FK。我更改了代码,不再更新PK。
答案 3 :(得分:-1)
这不是一个错误!听起来丹尼尔能够得出的结论是,查询并不像他原先想的那么简单。
This article似乎回答了与丹尼尔一样的问题。我也因为不同的(合法的)原因而遇到了同样的错误。在没有人预料到的数据的数据库上运行动态SQL会导致单个select语句包含数百个表。