Fehlermeldung beim Ausführen einer Abfrage in SQL Server 2005: "Interner Fehler: ein Ausdruck Services wurde erreicht"

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 913050
Problembeschreibung
Wenn Sie eine Abfrage in Microsoft SQL Server 2005 ausführen, erhalten Sie folgende Fehlermeldung:
Server: Msg 8632, Schweregrad 17, Status 2, Zeile 1
Interner Fehler: ein Ausdruck Services wurde erreicht. Suchen Sie nach potenziell komplexen Ausdrücken in Ihrer Abfrage, und vereinfachen sie.
Ursache
Dieses Problem tritt auf, weil SQL Server die Anzahl der Bezeichner und Konstanten, die in einem Ausdruck einer Abfrage enthalten sein können, beschränkt. Dieser Grenzwert ist 65.535. Die folgende Abfrage ist z. B. nur ein Ausdruck:
Select a, b + c, d + e
Dieser Ausdruck ruft alle fünf Spalten ab, berechnet die Addition und sendet die drei voraussichtlichen Ergebnisse an den Client.

In SQL Server 2005 werden Abfragen auf eine andere Weise intern normalisiert und vereinfacht als in Microsoft SQL Server 2000. Daher können einige Abfragen, die viele Konstanten und Bezeichner enthalten, in SQL Server 2000 erfolgreich kompiliert werden. Die gleichen Abfragen können jedoch nicht in SQL Server 2005 verwendet werden.

Der Test für die Anzahl der Bezeichner und Konstanten wird ausgeführt, nachdem SQL Server alle referenzierten Bezeichnern und Konstanten erweitert. Beispielsweise können folgende Elemente erweitert:
  • Das Sternchen (*) in der select-Liste
  • Eine Ansicht
  • Definition einer berechneten Spalte
Anzahl nach der Erweiterung den Grenzwert überschreitet, kann nicht die Abfrage ausgeführt.
Abhilfe
Um dieses Problem zu umgehen, ändern Sie die Abfrage. Verwiesen Sie weniger Bezeichner und Konstanten in der größten Ausdruck in der Abfrage. Sie müssen sicherstellen, dass die Anzahl der Bezeichner und Konstanten in jedem Ausdruck der Abfrage den Grenzwert nicht überschreiten. Hierzu müssen Sie eine Abfrage in mehrere einzelne Abfragen aufzuschlüsseln. Anschließend erstellen Sie eine temporäre Zwischenergebnis.

Warnung: Dieser Artikel wurde automatisch übersetzt.

Egenskaber

Artikel-id: 913050 – Seneste udgave 10/04/2015 12:00:00 – Udgave 2.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbexpertiseadvanced kbsql2005engine kbprb kbmt KB913050 KbMtde
Feedback