MSSQLSERVER_8632

适用于:SQL Server

详细信息

属性
产品名称 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 扩展所有引用的标识符和常量后,将执行标识符和常量数的测试。 例如,可能会展开以下项:

  • 选择列表中的星号 (*)
  • 视图
  • 计算列定义

如果扩展后的数量超出限制,则查询将无法运行。

用户操作

若要规避此问题,请重写查询。 在查询中的最大表达式中引用更少的标识符和常数。 必须确保查询的每个表达式中标识符和常数的数目不超过此限制。 为此,可能需要将查询分解为多个查询。 然后,创建一个临时的中间结果。