الأعراض
افترض ان لديك جمله UPDATE التي تشير إلى داله قسم غير موجودة باستخدام الكلمة الاساسيه $PARTITION في Microsoft SQL server 2014 أو 2016 أو 2017. على سبيل المثال
تحديث TableName SET ColumnName= ' xyz ' حيث $PARTITION. نونيكسيستينجبارتيتيونفونكشن (ColumnName) = 1
في هذه الحالة ، لا ينفذ SQL Server تحديثا أو يرجع رسالة خطا للاشاره إلى ان عنصر نونيكسيستينجبارتيتيونفونكتيون غير موجود. ومع ذلك ، يبدو ان عبارة UPDATE قد تم تنفيذها بنجاح ، ولكنها فشلت بالفعل.
السبب
عند تنفيذ دفعه ، قد ينفذ SQL Server تحليل الاسم المؤجل (دنر). في هذه العملية ، لا يصدر SQL Server علي الفور اي خطا عند مصادفه عنصر غير موجود ، ويتوقع ان يتم إنشاء الكائن بواسطة الوحدة النمطية أو الدفعة قبل تنفيذ الجملة التي تشير إلى هذا الكائن. بالنسبة إلى دالات الأقسام ، لا يعالج SQL Server دنر بشكل صحيح.
مزيد من المعلومات
للحصول علي مزيد من المعلومات حول دنر ، راجع تحليل الأسماء المؤجلة.
الحل
تم تصحيح هذه المشكلة في التحديثات التراكمية التالية ل SQL Server:
تحديث تراكمي 8 ل SQL Server 2016 SP1
يحتوي كل تحديث تراكمي جديد ل SQL Server علي كل الإصلاحات العاجلة وكل تصحيحات الأمان التي تم تضمينها في التحديث التراكمي السابق. اطلع علي آخر التحديثات التراكمية ل SQL Server:
آخر تحديث تراكمي ل SQL Server 2016
الحالة
أقرت Microsoft أن هذه المشكلة تحدث في منتجات Microsoft المسردة في المقطع "تنطبق على".
المراجع
تعرف علي المصطلحاتالتي تستخدمها Microsoft لوصف تحديثات البرامج.