KB4054398 - FIX: تحدث تأكيد البيع بالتجزئة "مقارنة غير صالحة بسبب عدم الترتيب" في SQL Server 2014 و2016 و2017

ينطبق على
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Standard on Windows SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core 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)

الأعراض

افترض أن لديك استعلاما ينفذ بعض عمليات السلسلة على سبيل المثال، التسلسل، على أعمدة CHAR أو VARCHAR في Microsoft SQL Server 2014 و2016 و2017. يُرجى مراعاة السيناريو التالي:

  • يمكنك تسلسل الأعمدة ذات الترتيبات المختلفة التي تم تعيينها لها.
  • هذه الترتيبات غير متوافقة مع بعضها البعض. على سبيل المثال، تحاول تسلسل عمود تم تجميعه على أنه Latin1_General_CI_AI مع Latin1_General_BIN.
  • يتم تعيين النتيجة النهائية للتسلسل إلى ترتيب معين (بما في ذلك "database_default") كمسألة حل تعارض الترتيب.

في هذا السيناريو، قد ترجع SQL Server تأكيد البيع بالتجزئة الذي ينص على "مقارنة غير صالحة بسبب عدم الترتيب"، وقد تتلقى بعض رسائل الخطأ التي تشبه ما يلي:

ملاحظة

  • الموقع: typinfo.cpp:LineNumber
    التعبير: خطأ
    SPID: SPID
    معرف العملية: معرف العملية
    الوصف: مقارنة غير صالحة بسبب عدم الترتيب.

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

  • Msg 596، المستوى 21، الحالة 1، خط الخط رقم
    لا يمكن متابعة التنفيذ لأن جلسة العمل في حالة الإيقاف.

  • Msg 0، المستوى 20، الحالة 0، خط الخط رقم

  • حدث خطأ فادح في الأمر الحالي.  يجب تجاهل النتائج، إن وجدت.

السبب

أثناء مرحلة تحسين الاستعلام، يحاول SQL Server حساب العلاقة الأساسية على النتائج الوسيطة لمراحل مختلفة من الاستعلام، على سبيل المثال، التسلسل. نظرا لأن حل تعارض الترتيب يحدث في النهاية، فقد يكون محسن الاستعلام غير مدرك له ويحاول إجراء حساب العلاقة الأساسية للتسلسل على إدخال مع ترتيب متعارض.

الدقة

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

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

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

التحديث التراكمي 9 SQL Server 2014 SP2

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

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

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

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

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

الحالة

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

المراجع

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