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.