Partager via


MSSQLSERVER_8632

S'applique à : SQL Server

Détails

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 8632
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique QUERY_EXPRESSION_TOO_COMPLEX
Texte du message Erreur interne : une limite des services d'expression est dépassée. Recherchez les expressions complexes dans votre requête et simplifiez-les.

Explication

L’erreur 8632 est générée lorsque vous exécutez une requête dans SQL Server qui contient un grand nombre d’identificateurs et de constantes dans une seule expression. Un message d’erreur semblable au suivant s’affiche :

Serveur : Msg 8632, Niveau 17, État 2, Ligne 1
Erreur interne : une limite des services d'expression est dépassée. Recherchez les expressions complexes dans votre requête et simplifiez-les.

Cause

Ce problème se produit parce que SQL Server limite le nombre d’identificateurs et de constantes qui peuvent être contenus dans une seule expression d’une requête. Cette limite s’élève à 65 535. Par exemple, la requête suivante ne comprend qu’une seule expression :

select a, b + c, d + e

Cette expression récupère les cinq colonnes, calcule les opérateurs d’addition et envoie trois résultats projetés au client.

Le test du nombre d’identificateurs et de constantes est effectué après que SQL Server développe tous les identificateurs et constantes référencés. Par exemple, les éléments suivants peuvent être développés :

  • L’astérisque (*) dans la liste de sélection
  • Une vue
  • Une définition de colonne calculée

Si le nombre après l’expansion dépasse la limite, la requête ne peut pas être exécutée.

Action utilisateur

Pour contourner ce problème, réécrivez votre requête. Référencez moins d’identificateurs et de constantes dans la plus grande expression de la requête. Vous devez garantir que le nombre d’identificateurs et de constantes figurant dans chaque expression de la requête ne dépasse pas la limite. Pour ce faire, vous devrez peut-être décomposer une requête en plusieurs requêtes. Créez ensuite un résultat intermédiaire temporaire.