KB4058565 - الإصلاح: خطأ التأكيد عند تنفيذ إجراء مخزن يشير إلى كائن كبير في SQL Server 2014 و2016 و2017

ينطبق على
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

الأعراض

قد يحدث خطأ في التأكيد عندما تقوم Microsoft SQL Server بتنفيذ إجراء مخزن بشكل متكرر يقوم بتنفيذ ما يلي:

  • يأخذ كائنا كبيرا، مثل varchar(max) أو varbinary(max)، كوسيطة، و
  • إنشاء جدول مؤقت يتم تحديد نطاقه لتنفيذ الإجراء، و
  • يستخدم وسيطة الكائن الكبير في الجدول المؤقت.

قد تجد خطأ التأكيد الذي يشبه ما يلي في سجل الخطأ SQL Server:

معرف SPID للتاريخ/الوقت خطأ: 17065، الخطورة: 16، الحالة: 1.

التاريخ/الوقت SPID SQL Server Assertion: File: FilePath\FileName, line = LineNumber Failed Assertion = 'fFalse' attempt to access expired blob handle (1). قد يكون هذا الخطأ متعلقا بالتوقيت. إذا استمر الخطأ بعد إعادة تشغيل العبارة، فاستخدم DBCC CHECKDB للتحقق من قاعدة البيانات بحثا عن التكامل الهيكلي، أو أعد تشغيل الخادم لضمان عدم تلف بنيات البيانات في الذاكرة.

معرف SPID للتاريخ/الوقت خطأ: 3624، الخطورة: 20، الحالة: 1.

معرف SPID للتاريخ/الوقت فشل التحقق من تأكيد النظام. تحقق من سجل الأخطاء SQL Server للحصول على التفاصيل. عادة ما يحدث فشل التأكيد بسبب خطأ في البرنامج أو تلف البيانات. للتحقق من تلف قاعدة البيانات، ضع في اعتبارك تشغيل DBCC CHECKDB. إذا وافقت على إرسال نسخ احتياطية إلى Microsoft أثناء الإعداد، فسيتم إرسال تفريغ صغير إلى Microsoft. قد يتوفر تحديث من Microsoft في حزمة الخدمة الأخيرة أو في إصلاح عاجل من الدعم التقني.

السبب

SQL Server منطق داخلي لتعطيل التخزين المؤقت للاستعلامات التي تشير إلى كائنات كبيرة بحيث لا تشير عمليات التنفيذ اللاحقة إلى LOBs هذه (التي تم إنشاؤها أثناء عمليات التشغيل السابقة وبالتالي فهي غير صالحة لعمليات التشغيل اللاحقة). لم يعالج هذا المنطق حالة تحليل الاسم المؤجل (DNR) على الجداول المؤقتة التي تسببت في تخزين هذه الخطط مؤقتا. الجداول المؤقتة ذات النطاق مكلفة للإنشاء، SQL Server تخزينها مؤقتا لإعادة استخدامها في عمليات التنفيذ اللاحقة. يمنع هذا إعادة التحويل البرمجي لمثل هذه الاستعلامات بسبب تغييرات المخطط.

تعرف على المزيد حول تحليل الاسم المؤجل.

الدقة

تم تصحيح هذه المشكلة في التحديثات التراكمية التالية SQL Server:

التحديث التراكمي 8 SQL Server 2016 SP1

التحديث التراكمي 4 SQL Server 2017

التحديث التراكمي 10 SQL Server 2014 Service Pack 2

حول التحديثات التراكمية SQL Server

يحتوي كل تحديث تراكمي جديد SQL Server على جميع الإصلاحات العاجلة وإصلاحات الأمان التي كانت موجودة في الإصدار السابق. اطلع على آخر تحديث تراكمي SQL Server:

آخر تحديث تراكمي SQL Server 2016

آخر تحديث تراكمي SQL Server 2017

آخر التحديثات التراكمية SQL Server 2014

الحالة

لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".

المراجع

تعرف على المصطلحات التي تستخدمها Microsoft لوصف تحديثات البرامج.