Stapelüberlauf tritt auf, wenn Sie eine Abfrage ausführen, die eine große Anzahl von Argumenten innerhalb IN oder NOT IN-Klausel in SQL Server enthält

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 288095 - Produkte anzeigen, auf die sich dieser Artikel bezieht
# Fehler: 235727 (Shiloh_bugs)
# Fehler: 58274 (sqlbug_70)
Alles erweitern | Alles schließen

Problembeschreibung

Abfragen, die eine große Anzahl von Argumenten (Tausende) innerhalb IN oder NOT IN-Klausel enthalten, die möglicherweise einen Stapelüberlauf generiert. Die folgende Abfrage führt z. B. in einem Stack Overflow:
SELECT max(au_id) FROM authors WHERE au_id IN(1,2,5,......,11571)  
-- Query contains over 11570 arguments.
				
der SQL Server-Fehlerprotokoll enthält Informationen der folgenden ähnelt, tritt der Stack-Überlauf:
2000-08-10 12:02:37.87 spid51    08/10/00 12:02:37 Stack Overflow Dump not possible - Exception c00000fd E at 0x00587286
2000-08-10 12:02:37.87 spid51    Address=587286 Exception Code = c00000fd
2000-08-10 12:02:37.87 spid51    eax=195922d0 ebx=19592338 ecx=2ad0e938 edx=00000007
2000-08-10 12:02:37.87 spid51    esi=196ce2c8 edi=19592180 eip=00587286 esp=2ac93000
2000-08-10 12:02:37.87 spid51    ebp=2ac93028 efl=00010202
2000-08-10 12:02:37.87 spid51    cs=1b ss=23 ds=23 es=23 fs=38 gs=0
2000-08-10 12:02:37.87 spid51    1: Return Address 00587286
2000-08-10 12:02:37.87 spid51    2: Return Address 0058728B.................
				
In einigen Fällen kann SQL Server tatsächlich Herunterfahren aufgrund eines Stack-Überlauf.

Abhilfe

Schreiben Sie die Abfrage und verwenden Sie eine #temp-Tabelle, um die Werte in der IN Liste anstelle der mit eine IN-Klausel enthalten. Beispielsweise die vorausgehende Abfrage kann re-written wie folgt sein:
CREATE TABLE #IN_values (au_id char(4))
INSERT INTO #IN_values select au_id FROM Table_with_values_123456789...

SELECT max(au_id)
FROM authors as A
JOIN #IN_values as I ON (A.au_id = I.au_id)
				

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen

Der Client ist nicht getrennt, aber diese Fehlermeldung auftreten:
Server: Msg 8621 auf 17, Status 1, 2 Interner Query Processor Fehler: der Abfrageprozessor hatte genügend Stackspeicher während der Abfrageoptimierung.

Eigenschaften

Artikel-ID: 288095 - Geändert am: Freitag, 2. November 2007 - Version: 4.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
Keywords: 
kbmt kbprb kbpending KB288095 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 288095
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com