SQLServer 错误 故障 处理 修复 支持远程
详细信息
Attribute | 值 |
---|---|
产品名称 | SQL Server |
事件 ID | 8632 |
事件源 | MSSQLSERVER |
组件 | SQLEngine |
符号名称 | QUERY_EXPRESSION_TOO_COMPLEX |
消息正文 | 内部错误:达到了表达式服务限制。 请在您的查询中查找潜在的复杂表达式,并尝试简化它们。 |
说明
在 SQL Server 中运行查询时,如果在单个表达式中包含大量的标识符和常数,则会引发错误 8632。 将向用户报告如下错误消息:
服务器:消息 8632,级别 17,状态 2,行 1
内部错误:达到了表达式服务限制。 请在您的查询中查找潜在的复杂表达式,并尝试简化它们。
原因
出现此问题,是因为 SQL Server 限制一条查询的单个表达式中可包含的标识符和常量数。 此限制为 65,535。 例如,下面的查询只包含一个表达式:
select a, b + c, d + e
此表达式会检索所有五列,计算加法运算符,并将三个预测结果发送到客户端。
在 SQL Server 展开所有引用的标识符和常数后,对标识符和常数的数量进行测试。 例如,可能会展开以下项:
- 选择列表中的星号 (*)
- 视图
- 计算列定义
如果扩展后的数量超出限制,则查询将无法运行。
用户操作
若要规避此问题,请重写查询。 在查询中的最大表达式中引用更少的标识符和常数。 必须确保查询的每个表达式中标识符和常数的数目不超过此限制。 为此,可能需要将查询分解为多个查询。 然后,创建一个临时的中间结果。