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: Limite dos serviços de expressão atingido. Procure expressões complexas na consulta e tente simplificá-las. |
Explicação
O erro 8632 é gerado quando você executa uma consulta no SQL Server que contém um grande número de identificadores e constantes em uma única expressão. Uma mensagem de erro semelhante à seguinte é relatada ao usuário:
Servidor: Msg 8632, Nível 17, Estado 2, Linha 1
Erro interno: Limite dos serviços de expressão atingido. Procure expressões complexas na consulta e tente simplificá-las.
Causa
Esse problema ocorre porque o SQL Server limita o número de identificadores e constantes que podem estar 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 o 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.