当前位置: 代码迷 >> Sql Server >> 查询微处理器在优化查询时堆栈空间不足,高分求解
  详细解决方案

查询微处理器在优化查询时堆栈空间不足,高分求解

热度:84   发布时间:2016-04-24 09:49:52.0
查询处理器在优化查询时堆栈空间不足,高分求解!
执行简单的删除

delete from config.wtinfo where wfid = 100001  

消息 8621,级别 17,状态 1,第 1 行
查询处理器在优化查询时堆栈空间不足。请简化查询。


这张表中跟它有关系的表有几百张。具体我也不清楚有哪些表?这个表的数据非常重要。在不删除表和数据的前提下怎么解决这个问题。高分求解!谢谢高手!


------解决思路----------------------
表中有触发器吗
目前服务器内存占用多少

------解决思路----------------------
那要看触发器都干了些什么了

可以禁用触发器再删除数据,但风险是删除的数据没有处理触发器干的,可能造成数据不一致。

很可能是,触发器中还会触发触发器,连锁才会堆栈不足。
------解决思路----------------------
外键问题,
删除数据必须先删除子表外键对应的数据,然后在删除主表中的数据。
因为之前,没有实现级联删除,才导致这个问题的出现。
------解决思路----------------------
引用:
我觉得也是这个问题。我应该怎么做?

找到与config.wtinfo有主外键关系的表
方法一:逐一删除外键所在表对应的数据,最后删除主表
方法二:实现级联删除,这样只要用上面的sql删除主表的数据,子表的对应数据也会自动删除掉。
------解决思路----------------------
引用:
高手,我的主表太重要了。它关联的表太多了,不能删除。  插入这条数据时下面关联的表没有数据。只插了这一条,就不能删除了,以后也是,插入的不能删除,只能做UPDATE和INSERT。求帮助

不知道你的意思是不是这样:
1)只删除这个主表的数据,其它子表对应的数据不动,也就是其它子表数据不用删除。
2)以后这个表只插入和更新数据,不作删除。

------解决思路----------------------
外键设置太多了,这是设计问题,应该选择一些不必是很必要的外键删除,直到从表没有数据的主表数据可以删除

实际上,大部分应用应该可以不必要靠外键来维持一致性的,前端程序应该维持数据一致
------解决思路----------------------
引用:
高手,我的主表太重要了。它关联的表太多了,不能删除。  插入这条数据时下面关联的表没有数据。只插了这一条,就不能删除了,以后也是,插入的不能删除,只能做UPDATE和INSERT。求帮助

要不取消外键关系~~
一般设计时,不把外键让数据库来做的,因为容易出现这样的维护问题导数据改数据问题,一般在程序上体现
------解决思路----------------------
有可能是触发器,当在主表插入一条数据,其它子表的数据也插入了数据。
不然照你说的情况,是可以删除数据的。
不管怎样,你要解决的话,需要找到这张表对应的外键关系。可以先取消主外键关系,删除数据后,再恢复。
------解决思路----------------------
引用:
不是。

是这样我的这张wtinfo表是一张中间的表。上面有主表,下面还有从表。这里面的其它数据我不动。只是我在调试时,在主表中插入一条有效数据,在这个wtinfo中也插入了些数据,下面从表就没有插过数据。现在我想把wtinfo表中我插的这条数据删除。出现了这个错误。

如果以它当主表的从表 没有插过数据,是不会有这样的问题的

你可以查看下,引用了它的表,
SELECT B.[name] parTable,C.[name] parCol FROM sys.foreign_key_columns A LEFT JOIN sys.objects B ON B.[object_id]=A.parent_object_id LEFT JOIN sys.columns C ON A.parent_object_id=C.[object_id] AND A.parent_column_id=C.column_id
WHERE referenced_object_id=OBJECT_ID('A1')

------解决思路----------------------
若外键太多,会不会是非数据BUFFER不足导致,这在32上会有这个可能
另外,如果外键上无索引和数据量大,也可能导致
数据的IUD本来很简单,但现实中的业务逻辑复杂,就导致了IUD也复杂了
------解决思路----------------------
这是递归触发器导致的,建议禁用触发器,使用代码删除关联数据。