بعد تطبيق هذا التحديث، يجب عليك إضافة علامة التتبع -T8075 كمعلمة بدء تشغيل لتمكين هذا التغيير.
الأعراض
عند تشغيل استعلام في إصدار 64 بت من Microsoft SQL Server 2012، تتلقى رسالة خطأ نفاد الذاكرة تشبه ما يلي في سجل أخطاء SQL Server:
ملاحظة
فشل تخصيص الصفحات: FAIL_PAGE_ALLOCATION 513
تستغرق الاستعلامات وقتا طويلا لإنهاء التنفيذ وتواجه SOS_MEMORY_TOPLEVELBLOCKALLOCATOR الانتظار.
عند فحص نقاط المعلومات التالية، ستجد أن مساحة العنوان الظاهري المتوفرة منخفضة جدا:
- DBCC MEMORYSTATUS - قسم Process/System Counts - الذاكرة الظاهرية المتوفرة
- DMV: sys.dm_os_process_memory - virtual_address_space_available_kb العمود
تبدأ هذه القيم حوالي 8 تيرابايت (TB) في عملية x64 وتستمر في الصعود إلى الأسفل والوصول إلى بضعة غيغابايت (GB).
عندما تكون في المرحلة التي تكون فيها مساحة العنوان الظاهري المتوفرة منخفضة جدا، قد تواجه الاستعلامات التي تحاول إجراء تخصيص الذاكرة أيضا نوع انتظار من CMEMTHREAD.
ستستمر نقاط البيانات التالية في الزيادة بمرور الوقت:
- DMV: sys.dm_os_process_memory sys.dm_os_memory_nodes - virtual_address_space_reserved_kb العمود
- DBCC MEMORYSTATUS - قسم إدارة الذاكرة - الجهاز الظاهري المحجوز
ستزيد هذه القيم عادة في مضاعفات قيمة "الحد الأقصى لذاكرة الخادم" حتى 8 تيرابايت تقريبا.
السبب
عندما تصل عملية SQL Server إلى الحالة حيث إجمالي ذاكرة الخادم = ذاكرة الخادم الهدف = ذاكرة الخادم القصوى، هناك نهج في إدارة الذاكرة SQL Server للسماح للتخصيصات الجديدة بطلب صفحات 8 كيلوبايت متعددة للنجاح مؤقتا. قد يتسبب نمط التخصيص المتكرر في ظل هذه الحالة في تجزئة كتل الذاكرة واستهلاك مساحة العنوان الظاهري. إذا تكررت هذه العملية عدة مرات، فسيتم استنفاد مساحة العنوان الظاهري SQL Server، وستلاحظ الأعراض التي ذكرناها سابقا.
الدقة
معلومات التحديث التراكمي
تم إصلاح المشكلة أولا في التحديث التراكمي التالي SQL Server.
التوصية: تثبيت آخر تحديث تراكمي SQL Server
يحتوي كل تحديث تراكمي جديد SQL Server على جميع الإصلاحات العاجلة وجميع إصلاحات الأمان التي تم تضمينها مع التحديث التراكمي السابق. نوصي بتنزيل آخر التحديثات التراكمية وتثبيتها SQL Server:
يمنع هذا الإصلاح العاجل نفاد الذاكرة والتقليل المستمر لمساحة العنوان الظاهري المتوفرة التي قد تواجهها.
الحالة
لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".
المزيد من المعلومات
يسمح Windows 2012 R2 لمساحة العنوان الظاهري بالنمو بقدر 128 تيرابايت. لذلك، قد لا تلاحظ هذه المشكلة في بيئات Windows 2012 R2. لمزيد من المعلومات، راجع الموضوع التالي في Windows Dev Center:
إذا رأيت نموا مستمرا في مساحة العنوان الظاهري حتى بعد تطبيق الإصلاح، يمكنك تحديد الاستعلامات أو العمليات التي تطلب أجزاء كبيرة من الذاكرة باستخدام الحدث الموسع Page_allocated. يبدو نموذج البرنامج النصي كما يلي:
CREATE EVENT SESSION [memory_tracking] ON SERVER ADD 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عادة ما تكون هذه هي النسخ الاحتياطية للسجل وعمليات صيانة الفهرس، والتي تحدث بشكل متكرر.