Freigeben über


MSSQLSERVER_8632

Gilt für: SQL Server

Details

attribute Wert
Produktname SQL Server
Ereignis-ID 8632
Ereignisquelle MSSQLSERVER
Komponente SQLEngine
Symbolischer Name QUERY_EXPRESSION_TOO_COMPLEX
Meldungstext Interner Fehler: Ein Grenzwert für Ausdrucksdienste wurde erreicht. Suchen Sie nach potenziell komplexen Ausdrücken in Ihrer Abfrage, und vereinfachen Sie diese.

Erklärung

Fehler 8632 wird ausgelöst, wenn Sie eine Abfrage in SQL Server ausführen, die eine große Anzahl von Bezeichnern und Konstanten in einem einzelnen Ausdruck enthält. Dem Benutzer wird eine Fehlermeldung wie die folgende angezeigt:

Server: Msg 8632, Level 17, State 2, Line 1
Interner Fehler: Ein Grenzwert für Ausdrucksdienste wurde erreicht. Suchen Sie nach potenziell komplexen Ausdrücken in Ihrer Abfrage, und vereinfachen Sie diese.

Ursache

Dieses Problem tritt auf, da SQL Server die Anzahl der Bezeichner und Konstanten begrenzt, die in einem einzelnen Ausdruck einer Abfrage enthalten sein können. Dieser Grenzwert ist 65.535. Die folgende Abfrage umfasst beispielsweise nur einen Ausdruck:

select a, b + c, d + e

Dieser Ausdruck ruft alle fünf Spalten ab, berechnet die Additionsoperatoren und sendet drei projizierte Ergebnisse an den Client.

Der Test für die Anzahl der Bezeichner und Konstanten wird ausgeführt, nachdem SQL Server alle referenzierten Bezeichner und Konstanten erweitert. Beispielsweise können die folgenden Elemente erweitert werden:

  • das Sternchen (*) in der Auswahlliste
  • eine Ansicht
  • die Definition einer berechneten Spalte

Wenn die Zahl den Grenzwert nach der Erweiterung überschreitet, kann die Abfrage nicht ausgeführt werden.

Aktion des Benutzers

Sie müssen die Abfrage neu schreiben, um dieses Problem zu umgehen. Verweisen Sie im größten Ausdruck in der Abfrage auf weniger Bezeichner und Konstanten. Sie müssen sicherstellen, dass die Anzahl der Bezeichner und Konstanten in den einzelnen Ausdrücken der Abfrage den Grenzwert nicht überschreitet. Zu diesem Zweck müssen Sie eine Abfrage möglicherweise in mehr als eine einzelne Abfrage aufteilen. Erstellen Sie dann ein temporäres Zwischenergebnis.