Momentálne ste offline a čaká sa, kým sa znova pripojíte na internet

Pretečenie zásobníka vyskytuje po spustení dotazu, ktorý obsahuje veľký počet argumentov vo vnútri v alebo nie v klauzule v SQL Server

DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:288095
Tento článok bol archivovaný. Je publikovaný v aktuálnej podobe a už nebude aktualizovaný.
BUG #: 235727 (shiloh_bugs)
BUG #: 58274 (sqlbug_70)
PRIZNAKY
Dotazy, ktoré obsahujú veľký počet argumentov (v tisícoch) vnútri IN alebo nie v klauzule môže vygenerovať pretečenie zásobníka. Napríklad, nasledovný dotaz výsledky v pretečenie zásobníka:
SELECT max(au_id) FROM authors WHERE au_id IN(1,2,5,......,11571)  -- Query contains over 11570 arguments.				
Denník chýb servera SQL Server obsahuje informácie podobné nasledujúcim, keď sa vyskytne pretečenie zásobníka:
2000-08-10 12:02:37.87 spid51    08/10/00 12:02:37 Stack Overflow Dump not possible - Exception c00000fd E at 0x005872862000-08-10 12:02:37.87 spid51    Address=587286 Exception Code = c00000fd2000-08-10 12:02:37.87 spid51    eax=195922d0 ebx=19592338 ecx=2ad0e938 edx=000000072000-08-10 12:02:37.87 spid51    esi=196ce2c8 edi=19592180 eip=00587286 esp=2ac930002000-08-10 12:02:37.87 spid51    ebp=2ac93028 efl=000102022000-08-10 12:02:37.87 spid51    cs=1b ss=23 ds=23 es=23 fs=38 gs=02000-08-10 12:02:37.87 spid51    1: Return Address 005872862000-08-10 12:02:37.87 spid51    2: Return Address 0058728B.................				
V niektorých prípadoch sa server SQL Server môže skutočne vypnutie z pretečenie zásobníka.
RIEŠENIE
Prepísať dotaz a použiť #temp tabuľku, ktorá obsahuje hodnoty v zozname namiesto pomocou klauzuly. Napríklad, predchádzajúceho dotazu možno re-písomné takhle:
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 AJOIN #IN_values as I ON (A.au_id = I.au_id)				
STAV
Spoločnosť Microsoft potvrdila, že ide o problém, ktorý sa týka produktov spoločnosti Microsoft uvedených na začiatku tohto článku.
DALSIE INFORMACIE
Klient neodpojí, ale toto chybové hlásenie sa môže vyskytnúť:
Server: Msg 8621, úroveň 17, štát 1, Linka 2Vnútorná chyba procesora dotaz: Dotaz procesor běžel von z miesta v zásobníku počas Optimalizácia dotazu.

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 288095 – Posledná kontrola: 12/06/2015 00:23:50 – Revízia: 2.0

Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbprb kbpending kbmt KB288095 KbMtsk
Pripomienky