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