MSSQLSERVER_8632

Aplica-se a:SQL Server

Detalhes

Atributo Valor
Nome do Produto SQL Server
ID do evento 8632
Origem do Evento MSSQLSERVER
Componente SQLEngine
Nome simbólico QUERY_EXPRESSION_TOO_COMPLEX
Texto da mensagem Erro interno: um limite dos serviços de expressão foi atingido. Procure expressões complexas na consulta e tente simplificá-las.

Explicação

O erro 8632 é gerado quando você executa uma consulta em SQL Server que contém um grande número de identificadores e constantes em uma só expressão. Uma mensagem de erro semelhante à seguinte é relatada ao usuário:

Servidor: Mensagem 8632, Nível 17, Estado 2, Linha 1
Erro interno: um limite dos serviços de expressão foi atingido. Procure expressões complexas na consulta e tente simplificá-las.

Causa

Isso ocorre porque SQL Server limita o número de identificadores e de constantes que podem ser contidos em uma única expressão de uma consulta. Esse limite é de 65.535. Por exemplo, a seguinte consulta tem apenas uma expressão:

select a, b + c, d + e

Essa expressão recupera as cinco colunas, calcula os operadores de adição e envia três resultados projetados para o cliente.

O teste para o número de identificadores e constantes é executado depois que SQL Server expande todos os identificadores e constantes referenciados. Por exemplo, os seguintes itens podem ser expandidos:

  • O asterisco (*) na lista de seleção
  • Uma exibição
  • Uma definição de coluna computada

Se o número após a expansão exceder o limite, a consulta não poderá ser executada.

Ação do usuário

Para contornar esse problema, reescreva a consulta. Referencie menos identificadores e constantes na expressão maior da consulta. O número de identificadores e constantes em cada expressão da consulta não deve exceder o limite. Para isso, talvez seja necessário dividir uma consulta em mais de uma. Em seguida, crie um resultado intermediário temporário.