FIX: يمكن تحديث تحديث ذاتي صلة مع عدد الصفوف غير صحيح

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية285870
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الخطأ رقم: 101111 (sqlbug_70)
BUG #: 351761 (SHILOH_bugs)
الأعراض
قد لا بتعديل عملية UPDATE العدد الصحيح من الصفوف في حالة تحقق الشروط التالية:
  • تحديث الاستعلام عن عمود ColA ، من جدول TabA.
  • الاستعلام مراجع TabA مرة أخرى، باستخدام مستعار TabB.
  • يوجد مرجع TabB.ColA مكان ما في الاستعلام.
  • لا يوجد أي من الأعمدة تحديث في TabA غير الأعمدة المفهرسة.
  • يتم استخدام صلة التجزئة أو دمج.
السبب
قد لا تتضمن خطة الاستعلام "التخزين جدول" الضرورية أدناه عامل UPDATE ضروري لتوفير "حماية عشية عيد القديسين".
الحل

SQL Server 2000

لحل هذه المشكلة، يجب الحصول على أحدث حزمة خدمة لـ Microsoft SQL Server 2000. للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
290211INF: كيفية الحصول على أحدث حزمة خدمة لبرنامج SQL Server 2000

SQL Server 7.0

لحل هذه المشكلة، يجب الحصول على أحدث حزمة خدمة لـ Microsoft SQL Server 7.0. للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
301511INF: كيفية الحصول على أحدث حزمة خدمة لبرنامج SQL Server 7.0


ملاحظة: تم إنشاؤه في الإصلاح العاجل التالي قبل إلى Microsoft SQL Server 7.0 المزود بحزمة الخدمة Service Pack 4.

يجب أن يكون للنسخة الإنجليزية من هذا الإصلاح سمات الملفات التالية أو أحدث:
   Version      File name       Platform   -------------------------------------   7.00.978     s70978i.exe     x86   7.00.978     s70978a.exe     Alpha				
ملاحظة: بسبب تبعيات الملف، أحدث إصلاح عاجل أو الميزة التي تحتوي على الملفات السابقة قد تحتوي أيضًا على ملفات إضافية.
الحل البديل
كمحاولة للتغلب على هذه المشكلة:
  • فرض صلة حلقة باستخدام OPTION (LOOP JOIN).

    - أو -

  • إضافة فهرس في الأعمدة المحدثة.
تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في بداية هذه المقالة.

SQL Server 2000
تم تصحيح هذه المشكلة لأول مرة في SQL Server 2000 Service Pack 1.

SQL Server 7.0
تم تصحيح هذه المشكلة لأول مرة في Microsoft SQL Server 7.0 المزود بحزمة الخدمة Service Pack 4.
معلومات أخرى
مطلوب عشية عيد القديسين حماية لمنع موقف حيث يتغير الموقع الفعلي صف داخل جدول تبعاً عملية تحديث. نتيجة لذلك، الصف نفسه قد يكون revisited عدة مرات ضمن سياق منطقية عملية واحدة ، والذي لا يجب القيام. حالة تحقق الشروط هذا الخطأ معينة قد للمحسن SQL Server لا إنشاء خطة مع حماية عشية عيد القديسين المناسبة.

يوضح المثال التالي المشكلة:
set nocount oncreate table test(id int, pid int, fn varchar(256), rn varchar(8))godeclare @c intset @c = 1insert into test values(0, NULL, 'root', 'root')while @c < 10begin   insert into test values(@c, @c-1, NULL, cast(@c as varchar(8)))   set @c = @c + 1endcreate unique clustered index idx_c_id on test(id)goupdate testset fn = parent.fn + '/' + test.rnfrom test(index=0) , test parent(index=0)where test.pid = parent.id and test.fn is NULL --  and parent.fn <> ''option(hash join,force order)				
توجد محتويات الجدول الصحيح هنا بعد التحديث:

--النتائج الصحيحة:
id          pid         rn       fn                                                                                                                                                                                                                                                               ----------- ----------- -------- ---- 0           NULL        root     root1           0           1        root/1				
هنا هي نتائج الحصول على قبل إلى تطبيق الإصلاح:

--نتائج غير صحيحة:
id          pid         rn       fn                                                                                                                                                                                                                                                               ----------- ----------- -------- ----0           NULL        root     root1           0           1        root/12           1           2        root/1/23           2           3        root/1/2/34           3           4        root/1/2/3/45           4           5        root/1/2/3/4/56           5           6        root/1/2/3/4/5/67           6           7        root/1/2/3/4/5/6/78           7           8        root/1/2/3/4/5/6/7/89           8           9        root/1/2/3/4/5/6/7/8/9				

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 285870 - آخر مراجعة: 01/16/2015 21:25:49 - المراجعة: 3.1

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition

  • kbnosurvey kbarchive kbmt kbbug kbfix KB285870 KbMtar
تعليقات