มากเกินไปสแตกที่เกิดขึ้นเมื่อคุณรันการสอบถามที่ประกอบด้วยจำนวนของอาร์กิวเมนต์ภายในเป็น IN หรืออนุประโยค NOT IN ใน SQL Server มาก

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 288095 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
BUG #: 235727 (shiloh_bugs)
BUG #: 58274 (sqlbug_70)
ขยายทั้งหมด | ยุบทั้งหมด

อาการ

แบบสอบถามที่ประกอบด้วยอาร์กิวเมนต์ (หน่วยพัน) จำนวนมากได้ภายในเป็น IN หรืออนุประโยค NOT IN อาจสร้างมากเกินไปของกองซ้อน ตัวอย่างเช่น แบบสอบถามต่อไปนี้ผลมากเกินไปสแตกมี:
SELECT max(au_id) FROM authors WHERE au_id IN(1,2,5,......,11571)  
-- Query contains over 11570 arguments.
				
ล็อกข้อผิดพลาดของเซิร์ฟเวอร์ SQL ประกอบด้วยข้อมูลที่คล้ายกับข้อความต่อไปนี้เมื่อมากเกินไปสแตกที่เกิดขึ้น:
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.................
				
ในบางกรณี SQL Server อาจปิดจริง ๆ แล้วเป็นผลมาจากการมากเกินไปสแตก

การหลีกเลี่ยงปัญหา

เขียนแบบสอบถาม และใช้ตาราง #temp มีค่าในรายการ IN แทนการใช้อนุประโยคของ IN ตัวอย่างเช่น แบบสอบถามก่อนหน้านี้สามารถเป็น re-written ดังนี้:
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)
				

สถานะ

Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วนเริ่มต้นของเอกสารนี้

ข้อมูลเพิ่มเติม

ไม่มีการเชื่อมต่อไคลเอ็นต์ แต่ข้อความแสดงข้อผิดพลาดนี้อาจเกิดขึ้น:
ข่าวสารเกี่ยวกับเซิร์ฟเวอร์: 8621, 17 ระดับ สถานะ 1 บรรทัด 2 ภายในแบบสอบถามตัวประมวลผลข้อผิดพลาด: หน่วยประมวลผลการสอบถามหมดแล้วกองซ้อนว่างในระหว่างการปรับให้เหมาะสมของแบบสอบถาม

คุณสมบัติ

หมายเลขบทความ (Article ID): 288095 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 3.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
Keywords: 
kbprb kbpending kbmt KB288095 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:288095

ให้ข้อเสนอแนะ

 

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