求教“消息 8632 达到了表达式服务限制”(急)

geodetic 2009-12-04 02:20:34
select域很长,有约2000个字段,且字段几乎都是 aa*bb-cc*dd as field1这样的形式,运行发生错误“消息 8632 达到了表达式服务限制”,将字段数缩减到1500左右就没有问题。
有没有不缩减字段数的办法?比如修改某个服务器配置?服务器是sql server 2005,sql语句肯定没有超长,网络数据包大小调整为10240也没用。
麻烦大家帮忙看看啊,帮顶有分,分不够另开新帖加,谢谢呵呵
...全文
827 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
pbsh 2009-12-04
  • 打赏
  • 举报
回复
不简化查询大概不行了,下面的链接是微软给出的这个问题的解释及解决方法:

http://support.microsoft.com/kb/913050/zh-cn
巴拉莱卡 2009-12-04
  • 打赏
  • 举报
回复
另外这个好像不是字段数的问题,是表达式本身的问题。
以前由于连接的左值过多出现过8631的问题,
8632没见过,你把超长的计算列改用函数实现或者如之前说的使用视图实施看看如何
geodetic 2009-12-04
  • 打赏
  • 举报
回复
select的字段数缩减到1500左右是没有问题的。
geodetic 2009-12-04
  • 打赏
  • 举报
回复
没有使用in,查询其实很简单,只有几个join,麻烦的是有2000多个计算列需要输出,如果要把这些列拆分到2个sql语句要改不少东西,所以希望能有什么办法避开 错误 8632 ,在一条语句里解决这个问题。
laker_914 2009-12-04
  • 打赏
  • 举报
回复
真想看一下楼主的SQL,呵呵!
pbsh 2009-12-04
  • 打赏
  • 举报
回复
在 IN 子句中包括数量非常多的值(数以千计)可能会消耗资源并返回错误 8623 或 8632。若要解决这一问题,请将这些项存储于某个表的 IN 列表中。
错误 8623:

查询处理器用尽了内部资源,无法生成查询计划。这种情况很少出现,只有在查询极其复杂或引用了大量表或分区时才会出现。请简化查询。如果您认为该消息的出现纯属错误,请与客户支持服务部门联系,了解详细信息。

错误 8632:

内部错误: 达到了表达式服务限制。请在您的查询中查找潜在的复杂表达式,并尝试简化它们。
--小F-- 2009-12-04
  • 打赏
  • 举报
回复
2000个字段分拆成几个表 用视图来做试试
rucypli 2009-12-04
  • 打赏
  • 举报
回复
尝试简化它们
巴拉莱卡 2009-12-04
  • 打赏
  • 举报
回复
视图试过了,没起作用?

说的是将视图作为简化查询步骤的一种手段,为一些中间查询,使用频率较高的代码创建视图可以缩短查询的复杂性,改善库的访问结构。

Zoezs 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 geodetic 的回复:]
视图试过了,没起作用,有没有什么配置可以改变这个“表达式服务限制”呢?
[/Quote]
不知道,学习,帮顶。
geodetic 2009-12-04
  • 打赏
  • 举报
回复
视图试过了,没起作用,有没有什么配置可以改变这个“表达式服务限制”呢?
  • 打赏
  • 举报
回复
微软给出的解释:

8632
17

内部错误: 达到了表达式服务限制。请在您的查询中查找潜在的复杂表达式,并尝试简化它们。
  • 打赏
  • 举报
回复
这个貌似不好办,试试先设计成几个视图

22,199

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧