الأعراض
افترض انك تستخدم Microsoft SQL Server 2016 أو 2017. عند معالجه معاملات بيانات محسنه للذاكرة باستخدام متغيرات الجدول المحسنة للذاكرة بواسطة عبارة where الموجودة ، قد تتلقي نتيجة خطا.
على سبيل المثال:
خطوه 1: إنشاء قاعده بيانات وجدول محسنين للذاكرة.
إنشاء عرض تقديمي لقاعده البيانات
تغيير العرض التوضيحي لأضافه مجموعه البيانات demo_mod يحتوي علي MEMORY_OPTIMIZED_DATA
تغيير العرض التوضيحي لقاعده البيانات أضافه ملف (name = ' demo_mod1 ', filename = ' C:\DATA\ demo_mod1 ') إلى مجموعه الملفات demo_mod
استخدام العرض التوضيحي
متابعه
إنشاء نوع dbo.bigtable. الIN_MEMORY_TABLE_TYPE كجدول
(source_col INT NULL ،
target_col INT not NULL
INDEX ix_InMemoryTable نونكلوستيريد (target_col)
) مع (MEMORY_OPTIMIZED = تشغيل)
متابعه
خطوه 2: ادراج البيانات وتحديثها.
إعلان @t dbo.bigtable. IN_MEMORY_TABLE_TYPE
ادراج @t (source_col ، target_col) (10, 0) ، (0, 0)
حدد * من @t
تحديث r1 SET target_col =-1 من @t r1
أين يوجد (حدد * من @t r2 حيث r2.source_col > 0)
حدد * من @t
متابعه
Step3: تحقق من النتائج.
النتائج الفعلية: لم يتم تحديث كل صفوف متغير الجدول @t .
source_col | target_col
----------------------
10 | -1
0 | %
النتائج المتوقعة: يجب ان يتم تحديث كل الصفوف للحصول علي target_col =-1.
source_col | target_col
----------------------
10 | -1
0 | 1.
الحل
تم تصحيح هذه المشكلة في التحديثات التراكمية التالية ل SQL Server:
يحتوي كل تحديث تراكمي جديد ل SQL Server علي كل الإصلاحات العاجلة وكل تصحيحات الأمان التي تم تضمينها في التحديث التراكمي السابق. اطلع علي آخر التحديثات التراكمية ل SQL Server:
الحالة
أقرت Microsoft أن هذه المشكلة تحدث في منتجات Microsoft المسردة في المقطع "تنطبق على".
المراجع
تعرف علي المصطلحاتالتي تستخدمها Microsoft لوصف تحديثات البرامج.