อาจไม่มีหน่วยความจำเสมือนพอเมื่อคุณมีฐานข้อมูลจำนวนมากใน SQL Server

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

อาการ

อาจไม่มีเนื้อที่ว่างเพียงพอที่อยู่เสมือนที่มีอยู่ในกระบวนการของ Microsoft SQL Server ถ้าทั้งหมดที่มีเงื่อนไขใด ๆ ต่อไปนี้เป็นจริงเมื่อคุณเรียกใช้ SQL Server ด้วยค่าเริ่มต้นค่าการตั้งค่าคอนฟิก:
  • เซิร์ฟเวอร์ได้ 2 กิกะไบต์หรือมากกว่า RAM
  • ฐานข้อมูลในระบบ (ตัวอย่าง มากกว่า 500) จำนวนมากได้
  • มีการปรับปรุงส่วนใหญ่ของฐานข้อมูล (ตัวอย่างเช่น ฐานข้อมูลไม่มีสถานะที่ "แบบอ่านอย่างเดียว")
  • มีเพียงพอสำหรับการเชื่อมต่อผู้ใช้ที่พร้อมใช้งานอยู่เพื่อใช้ส่วนใหญ่ของผู้ปฏิบัติงานเธรด 255 ของ SQL Server
SQL Server อาจสร้างข้อความแสดงข้อผิดพลาดต่อไปนี้หลังจากที่มีใช้พื้นที่ที่อยู่เสมือนทั้ง 2 กิกะไบต์ขึ้น (หรือหลัง จากที่มีใช้พื้นที่ที่อยู่เสมือนทั้ง 3 กิกะไบต์ขึ้นใน SQL Server องค์กร Edition ด้วย/ จี 3สลับในแฟ้ม Boot.ini)

ข้อความที่ 1

ข้อผิดพลาด: 17802 ความรุนแรง: สถานะ 18 : 3
ไม่สามารถสร้างเธรดเหตุการณ์ของเซิร์ฟเวอร์

ข้อความ 2

sql Server อาจไม่ spawn process_loginread เธรด

ข้อความที่ 3

คำเตือน: การล้างแคชขั้นตอนเพื่อเพิ่มหน่วยความจำที่อยู่ติดกัน

บัฟเฟอร์การแจกจ่าย: โจรกรรม = 3454 ฟรี =กระบวนงานที่ 2540 = 138
Inram = 0 = 1108 เก็บ Dirty = 35
ฉัน / O = 0, Latched = 0 เพิ่ม = 214821
จำนวนครั้งของบัฟเฟอร์: กำหนด =เป้าหมาย 222096 = 222096 Hashed = 215964
InternalReservation = ExternalReservation 547 = 0 น้อยที่สุด = 512 ฟรี
ขั้นตอนการแคช: TotalProcs = TotalPages 8 = InUsePages 138 = 138
ตัวจัดการหน่วยความจำแบบไดนามิก: โจรกรรม = 3556
ระบบปฏิบัติ =ทั่วไป 497 = 1706
แผนการสอบถาม = Optimizer 755 = 0
โปรแกรมอรรถประโยชน์ =การเชื่อมต่อที่ 9 = 1583
วัตถุหน่วยความจำส่วนกลาง: ทรัพยากร =ล็อก 1119 = XDES 163 = SQLCache 1 =การจำลองแบบ 90 = LockBytes 5 = ServerGlobal 2 = 20
ตัวจัดการหน่วยความจำของแบบสอบถาม: มอบให้แก่ =กำลังรอ 0 = 0 มากที่สุด = 164370 มี = 164370

สาเหตุ

สำหรับฐานข้อมูลแต่ละฉบับปรับปรุง SQL Server จัดสรรบล็อกกิโลไบต์ 64 อย่างน้อยหนึ่งสำหรับใช้ในการจัดรูปแบบการล็อกระเบียนก่อนที่จะเขียนลงดิสก์ การปันส่วนนี้เกิดขึ้นเมื่อมีการล็อกระเบียนแรกถูกสร้างขึ้นสำหรับฐานข้อมูล เช่นระหว่างงบ INSERT, UPDATE หรือลบ ขึ้นอยู่กับกิจกรรมและขนาดของระเบียนแฟ้มบันทึกที่สร้าง แก้ไขในภายหลังอาจเรียกการปันส่วนของการปันส่วนของกิโลไบต์ 64 เพิ่มเติม sql Server 7.0 จะจัดสรรบล็อกกิโลไบต์ 54 ไม่เกินสาม ใน SQL Server 2000 หมายเลขที่ด้านบนของการปันส่วน สำหรับแต่ละฐานข้อมูลคือ ฟังก์ชันของจำนวนที่ใช้ในการประมวลผล SQL Server ที่มีการกำหนดค่าให้ใช้

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

ใช้แบบ-gพารามิเตอร์การเริ่มต้นระบบเพื่อปล่อยให้เพิ่มเติม unreserved เสมือนมีหน่วยความจำสำหรับเหล่านี้ฐานข้อมูลการปันส่วน กระบวนการ-gพารามิเตอร์ที่ได้รับการบันทึกไว้ ใน Readme.txt ของ SQL Server service ที่ 7.0 pack และ ใน SQL Server 2000 หนังสือออนไลน์ การเพิ่มเติม "ข้อมูล" ส่วนในบทความนี้มีการตั้งค่าที่ Microsoft แนะนำให้คุณใช้เพื่อกำหนดค่าที่เหมาะสมสำหรับนี้การตั้งค่า

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

บนคอมพิวเตอร์ที่มีการ 2 กิกะไบต์ หรือมากกว่า RAM ส่วนสำรองของ sql server ทั้งหมด แต่ 256 MB (SQL Server 7.0) หรือ 384 เมกะไบต์ (SQL Server 2000) ของพื้นที่ที่อยู่เสมือนในระหว่างกระบวนการเริ่มต้นสำหรับใช้โดยพูบัฟเฟอร์ นอกจากนี้ การจัดเก็บในแคชข้อมูลและกระบวนการ SQL Server ใช้หน่วยความจำเก็บบัฟเฟอร์เพื่อให้บริการส่วนใหญ่อื่น ๆ หน่วยความจำร้องจากกระบวนการของ sql server ที่เป็นที่น้อยกว่ากิโลไบต์ 8 หน่วยความจำ unreserved เหลือมีไว้สำหรับใช้กับการปันส่วนอื่น ๆ ที่ไม่สามารถให้บริการจากพูบัฟเฟอร์ การปันส่วนเหล่านี้รวม แต่ไม่จำกัดเพียงการ:
  • กองซ้อนและบล็อกสภาพแวดล้อมของเธรดที่เกี่ยวข้องสำหรับเธรดที่ SQL Server สร้าง หลังจากที่ SQL Server สร้างเธรดตอนตัวทำ 255 ทั้งหมด นี่คือประมาณ 140 เมกะไบต์
  • การปันส่วนที่มีการสร้างขึ้น โดย DLLs อื่น ๆ หรือการประมวลผลที่กำลังทำงานในพื้นที่ที่อยู่ของ sql server (ซึ่งแตกต่างไปจากระบบการระบบ), เช่น:
    • ผู้ให้บริการ ole DB จากเซิร์ฟเวอร์ที่มีการเชื่อมโยงใด ๆ
    • วัตถุ COM ที่โหลด โดยการใช้งานนั้นsp_OAระบบขั้นตอนการจัดเก็บ หรือขยายกระบวนงานที่เก็บไว้
  • การเชื่อมโยงใด ๆ รูป (.exe หรือ.dll) ที่โหลดในพื้นที่ที่อยู่ ซึ่งโดยทั่วไปใช้ 20 ถึง 25 เมกะไบต์ แต่อาจเพิ่มเติมถ้าคุณใช้ เซิร์ฟเวอร์sp_OAหรือขยายกระบวนงานที่เก็บไว้
  • ฮีปกระบวนการและ heaps อื่น ๆ ที่อาจสร้าง SQL Server ในระหว่างกระบวนการเริ่มต้น ซึ่งโดยปกติคือ 10 MB แต่อาจเพิ่มเติมถ้าคุณกำลังใช้การเชื่อมโยงกับเซิร์ฟเวอร์sp_OAหรือขยายกระบวนงานที่เก็บไว้
  • การปันส่วนจากกระบวนการของ sql server ที่มีมากกว่ากิโลไบต์ที่ 8 เช่นที่จำเป็นสำหรับแผนการสอบถามที่มีขนาดใหญ่ ส่ง และรับบัฟเฟอร์ถ้าการขนาดแพ็คเก็ตเครือข่ายตัวเลือกการตั้งค่าคอนฟิกที่อยู่ใกล้กับกิโลไบต์ 8 และอื่น ๆ เมื่อต้องการดูหมายเลขนี้ ค้นหานี้ระบบปฏิบัติจองค่าที่มีรายงานใน MEMORYSTATUS DBCC และที่มีรายงานเป็นจำนวนกิโลไบต์ 8 หน้า ค่านี้ปกติเป็น 5 เมกะไบต์
  • อาร์เรย์เพื่อติดตามข้อมูลสถานะสำหรับแต่ละบัฟเฟอร์ที่อยู่ในที่เก็บบัฟเฟอร์ อยู่โดยทั่วไปเกี่ยวกับ 20 ไบต์ เว้นแต่ว่าเซิร์ฟเวอร์ SQL กำลังทำงานกับราย Windowing ส่วนขยาย (AWE) เปิดใช้งาน ซึ่งในกรณี ดังกล่าวอาจเป็นสูงมาก
บนระบบที่มีหมายเลขที่มีขนาดใหญ่ของฐานข้อมูล การปันส่วน 64-กิโลไบต์ที่จำเป็นสำหรับการบันทึกการจัดรูปแบบอาจใช้หน่วยความจำเสมือนเหลือทั้งหมด ณจุดที่ การปันส่วนที่ตามมาอาจล้มเหลว อันเป็นผลในอย่างน้อยหนึ่งข้อผิดพลาดที่ระบุไว้ใน "อาการ" ส่วนในบทความนี้ได้

โดย-gแนะนำพารามิเตอร์เริ่มต้น คุณสามารถผู้ SQL Server จะปล่อยให้เติมเสมือนมีหน่วยความจำเพื่อให้รวมของการปันส่วนนี้เกี่ยวข้องกับการบันทึกและการปันส่วนปกติอื่น ๆ ไม่ทำงานออกจากพื้นที่ที่อยู่เสมือน

ต่อไปนี้ในตารางรายการบางอย่างที่แนะนำจุดสำหรับการเริ่มต้นแบบ-gค่าที่ขึ้นอยู่กับจำนวนของฐานข้อมูลและรุ่นของเซิร์ฟเวอร์:
ยุบตารางนี้ขยายตารางนี้
ฐานข้อมูลsql Server 7.0SQL Server 2000
250-g134N/A
500-g185N/A
750-g237N/A
1000-g288-g288
1250-g340-g340
1500-g392-g392
ตารางนี้ถูกคำนวณ โดยใช้ค่าโดยทั่วไปที่ระบุไว้ และคุณยังใช้ assumption ที่ที่กิจกรรมไม่มีเซิร์ฟเวอร์ถูกเชื่อมโยงsp_OAหรือขยายกระบวนงานที่เก็บไว้มีการใช้ คุณยังขึ้น assumption ว่า คุณไม่ได้ใช้ AWE และ Profiler SQL ที่ไม่ได้ใช้ เงื่อนไขเหล่านี้อาจทำให้คุณต้องเพิ่มค่า-g.

Microsoft recommends that you take serious consideration before you run a server with more databases than this because the overhead that is required for having this number of databases on the system is taking a lot of virtual memory away from the buffer pool, which may result in poor performance for the system as a whole.

Additionally, creating lots of databases has the most significant effect on virtual memory. There are also per-database memory allocations that may cause a buffer pool out-of-memory condition. For example, you may receive the following error message:
Error: 701, Severity: 17, State: 123.
หน่วยความจำระบบไม่เพียงพอที่จะเรียกใช้แบบสอบถามนี้ได้
This kind of out-of-memory condition may be more common in SQL Server 2005 because SQL Server 2005 tracks more per-database metadata than earlier versions of SQL Server.

When you track the index usage by using thesys.dm_db_index_usage_statsstored procedure, the operation may require a significant amount of memory. The operation requires a significant amount of memory if each database has lots of indexes.

คุณสมบัติ

หมายเลขบทความ (Article ID): 316749 - รีวิวครั้งสุดท้าย: 13 มกราคม 2554 - Revision: 5.0
ใช้กับ
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard Edition
Keywords: 
kberrmsg kbtshoot kbnofix kbprb kbmt KB316749 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:316749

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

 

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