الأعراض
افترض أن لديك جدول Microsoft SQL Server يحتوي على فهرس واحد أو أكثر مبني عليه. عند الاستعلام مقابل الجدول، قد يقوم SQL Server بإجراء مساحة بيانات غير متناسقة لأعمدة CHAR و BINARY. يعتمد السلوك غير المتسق لإرجاع الفراغات اللاحقة في نهاية أعمدة البيانات CHAR و BINARY على الشروط التالية:
- إعدادات ANSI_PADDING عند إنشاء أعمدة في الجدول SQL Server.
- قرار إجراء فحص الجدول أو البحث عن الفهرس على الأعمدة.
السبب
في بعض السيناريوهات، قد يقوم SQL Server بإجراء تحسين يسمح له بتجاوز العديد من العمليات لتسليم البيانات بشكل أسرع. تحدث المشكلة لأن SQL Server لا يتعرف على أنه لا يمكن تطبيق التحسين للسيناريو أعلاه.
المزيد من المعلومات
لا يتوافق سلوك SQL Server هذا مع السلوك الموثق في المقالة التالية: استخدام بيانات Char و Varchar.
ملاحظة
إذا كان ANSI_PADDING قيد التشغيل عند إنشاء عمود char NULL، فإنه يتصرف بنفس سلوك عمود char NOT NULL: تتم إضافة القيم بزر الماوس الأيمن إلى حجم العمود. إذا كان ANSI_PADDING متوقفا عن التشغيل عند إنشاء عمود char NULL، فإنه يتصرف مثل عمود varchar مع تعيين ANSI_PADDING إيقاف التشغيل: يتم اقتطاع الفراغات اللاحقة.
الدقة
تم تصحيح هذه المشكلة في التحديثات التراكمية التالية SQL Server:
التحديث التراكمي 2 SQL Server 2017
التحديث التراكمي 9 SQL Server 2016
التحديث التراكمي 6 SQL Server 2016 SP1
التحديث التراكمي 8 SQL Server 2014 SP2
التحديث التراكمي 7 SQL Server 2014 SP1
حول التحديثات التراكمية SQL Server:
يحتوي كل تحديث تراكمي جديد SQL Server على جميع الإصلاحات العاجلة وجميع إصلاحات الأمان التي تم تضمينها مع التحديث التراكمي السابق. اطلع على آخر التحديثات التراكمية SQL Server:
آخر تحديث تراكمي SQL Server 2017
آخر تحديث تراكمي SQL Server 2016
آخر تحديث تراكمي SQL Server 2014
الحالة
أكدت Microsoft أن هذه مشكلة في منتجات Microsoft المدرجة في قسم "ينطبق على"
المراجع
تعرّف على المصطلحات التي تستخدمها Microsoft لوصف تحديثات البرامج.