الأعراض
لنفترض أنك تستخدم Microsoft SQL Server 2016 و2017. إذا قمت بتمكين xml_deadlock_report الحدث لتجميع البيانات لحالات التوقف التام، فسيتم الإبلاغ عن العديد من أحداث xml_deadlock_report لحالة توقف تام واحد داخل الاستعلام.
الحل البديل
كحل بديل لهذه المشكلة، يمكنك جمع error_reported XEvent باستخدام عامل تصفية error_number = 1205 بدلا من xml_deadlock_report، كما هو موضح في المثال التالي:
ملاحظة
- إنشاء جلسة عمل حدث [Deadlock_Collection] على الخادم
- إضافة حدث sqlserver.error_reported(
- WHERE ([error_number]=(1205)))
- ADD TARGET package0.histogram(SET filtering_event_name=N'sqlserver.lock_acquired',source=N'sqlserver.query_hash')
- ب (MAX_MEMORY=4096 كيلوبايت,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 ثانية,MAX_EVENT_SIZE=0 كيلوبايت,MEMORY_PARTITION_MODE=بلا,TRACK_CAUSALITY=تشغيل,STARTUP_STATE=إيقاف)
- GO
الدقة
تم تصحيح هذه المشكلة في التحديثات التراكمية التالية ل SQL Server:
التحديث التراكمي 10 ل SQL Server 2017
التحديث التراكمي 2 ل SQL Server 2016 SP2
ملاحظة: باستخدام هذا الإصلاح، لا يتم الإبلاغ عن أي أحداث xml_deadlock_report للتوقف التام داخل الاستعلام عندما يمكن حل التوقف التام دون إنهاء مؤشر ترابط.
حول التحديثات التراكمية ل SQL Server:
يحتوي كل تحديث تراكمي جديد ل SQL Server على جميع الإصلاحات العاجلة وجميع إصلاحات الأمان التي كانت مضمنة في التحديث التراكمي السابق. تحقق من آخر التحديثات التراكمية ل SQL Server:
التحديث التراكمي الأخير ل SQL Server 2017
التحديث التراكمي الأخير ل SQL Server 2016
الحالة
لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".
المراجع
تعرّف على المصطلحات التي تستخدمها Microsoft لوصف تحديثات البرامج.