Applies ToSQL Server 2012 Service Pack 3 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Standard

หลังจากที่คุณนำการอัปเดตนี้ไปใช้แล้วคุณจำเป็นต้องเพิ่ม ค่าสถานะการติดตาม-T8075 เป็นพารามิเตอร์เริ่มต้นเพื่อเปิดใช้งานการเปลี่ยนแปลงนี้

อาการ

เมื่อคุณเรียกใช้คิวรีใน Microsoft SQL Server ๒๐๑๒เวอร์ชัน๖๔คุณจะได้รับข้อความแสดงข้อผิดพลาดของหน่วยความจำที่คล้ายกับต่อไปนี้ในบันทึกข้อผิดพลาด SQL Server:

หน้าการจัดสรรที่ล้มเหลว: FAIL_PAGE_ALLOCATION ๕๑๓

แบบสอบถามใช้เวลานานในการดำเนินการเสร็จสิ้นและพบ SOS_MEMORY_TOPLEVELBLOCKALLOCATOR รอ เมื่อคุณตรวจสอบจุดข้อมูลต่อไปนี้คุณจะพบว่ามีพื้นที่ที่อยู่เสมือนที่พร้อมใช้งานต่ำมาก:

  • DBCC MEMORYSTATUS-กระบวนการ/ระบบตรวจนับส่วน-หน่วยความจำเสมือนที่พร้อมใช้งาน

  • DMV: sys.dm_os_process_memory-virtual_address_space_available_kb คอลัมน์

ค่าเหล่านี้จะเริ่มต้นประมาณ8เทราไบต์ (TB) บนกระบวนการ x 64 และดำเนินการต่อไปจนถึงจำนวนกิกะไบต์ (GB)  เมื่อคุณอยู่ที่ขั้นตอนที่พื้นที่ที่อยู่เสมือนที่พร้อมใช้งานจะต่ำมากแบบสอบถามที่พยายามดำเนินการการจัดสรรหน่วยความจำอาจยังพบชนิดการรอของ CMEMTHREAD จุดข้อมูลต่อไปนี้จะยังคงเพิ่มขึ้นตลอดเวลา:

  • DMV: sys.dm_os_process_memory และ sys.dm_os_memory_nodes-คอลัมน์ virtual_address_space_reserved_kb

  • การ DBCC MEMORYSTATUS-ส่วนตัวจัดการหน่วยความจำ-VM ที่สงวนไว้

ค่าเหล่านี้โดยทั่วไปจะเพิ่มขึ้นในหลายส่วนของค่า "หน่วยความจำสูงสุดของเซิร์ฟเวอร์" จนถึงเกือบ 8 TB

สาเหตุ

เมื่อกระบวนการ SQL Server ได้มาถึงสถานะที่รวมหน่วยความจำของเซิร์ฟเวอร์ = เป้าหมายเซิร์ฟเวอร์หน่วยความจำ = หน่วยความจำเซิร์ฟเวอร์สูงสุด = หน่วยความจำของเซิร์ฟเวอร์ใน SQL Server เพื่อให้การร้องขอการปันส่วนใหม่มีหลายหน้า 8 KB เพื่อให้สำเร็จชั่วคราว รูปแบบการปันส่วนที่ซ้ำกันภายใต้เงื่อนไขดังกล่าวอาจทำให้เกิดการกระจายตัวของบล็อกหน่วยความจำและการใช้พื้นที่ที่อยู่เสมือน ถ้ากระบวนการนี้ทำซ้ำหลายครั้งช่องว่างที่อยู่เสมือนของ SQL Server จะหมดและคุณจะสังเกตเห็นอาการที่กล่าวถึงก่อนหน้านี้

การแก้ไข

ข้อมูลโปรแกรมอัปเดตสะสม

ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตที่สะสมของ SQL Server ครั้งแรก

 

การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ เราขอแนะนำให้คุณดาวน์โหลดและติดตั้งการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:

โปรแกรมแก้ไขด่วนนี้จะป้องกันไม่ให้หน่วยความจำทั้งหมดและการลดพื้นที่ที่อยู่เสมือนที่พร้อมใช้งานที่คุณอาจพบได้อย่างต่อเนื่อง

สถานะ

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

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

  • Windows ๒๐๑๒ R2 อนุญาตให้มีช่องว่างที่อยู่เสมือนขยายใหญ่เป็น๑๒๘ TB ดังนั้นคุณอาจไม่สังเกตว่าปัญหานี้ในสภาพแวดล้อมของ Windows ๒๐๑๒ R2 สำหรับข้อมูลเพิ่มเติมให้ดูหัวข้อต่อไปนี้ใน Windows Dev Center:ขีดจำกัดของหน่วยความจำสำหรับ windows และการเผยแพร่ Windows Server

  • ถ้าคุณเห็นการเติบโตอย่างต่อเนื่องในช่องว่างที่อยู่เสมือนแม้ว่าคุณจะใช้การแก้ไขคุณสามารถกำหนดว่าจะมีคิวรีหรือการดำเนินการใดที่กำลังร้องขอขนาดใหญ่ของหน่วยความจำโดยใช้ Page_allocated การขยายเหตุการณ์ สคริปต์ตัวอย่างจะมีลักษณะดังนี้

    CREATE EVENT SESSION [memory_tracking] ON SERVERADD EVENT sqlos.page_allocated(    ACTION(package0.callstack,sqlos.cpu_id,sqlos.task_address,sqlos.worker_address,sqlserver.database_id,sqlserver.query_hash,sqlserver.request_id,sqlserver.session_id,sqlserver.sql_text)    WHERE ([number_pages]>(1)))ADD TARGET package0.event_file(SET filename=N'E:\Data\MSSQL11.MSSQLSERVER\MSSQL\Log\memory_tracking.xel')WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=PER_CPU,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)GO

    โดยทั่วไปแล้วจะเป็นการดำเนินการบันทึกการสำรองข้อมูลและการบำรุงรักษาดัชนีซึ่งเกิดขึ้นบ่อยครั้ง

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย