أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

FIX: يحتوي على نتيجة غير صحيحة عند تشغيل استعلام التزامن وفصل 3.5 Compact ملقم SQL

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

اضغط هنا لرابط المقالة باللغة الانجليزية2494715
الأعراض
عند تشغيل استعلام في مقابل قاعدة بيانات Microsoft SQL Server ضغط 3.5، يتم إرجاع نتيجة غير صحيحة. تحدث هذه المشكلة عندما يحتوي الاستعلام على جنبا إلى جنب وفصل. إذا افترضنا أن تلك العوامل الحسابية و و OR، الاستعلام يجب أن تفي بالشروط معينة التالية:
  • أحد المعاملات من و عامل التشغيل هو عبارة عن تعبير يحتوي على OR عامل تشغيل.
  • المعاملات منORيتضمن عامل تشغيل تعابير تشير إلى نفس العمود. ولذلك، يمكن استخدام فهرس عمود بحيث تتطابق مع التعبيرات.
  • معامل أخرى من وعامل تشغيل يحتوي على مرجع إلى عمود يستخدم نفس الفهرس الموجود في العمود الذي تم تحديده في نقطة الرمز النقطي السابق في هذه القائمة. ولذلك، الفهرس يمكن أيضا استخدامها على هذا التعبير.
على سبيل المثال، افترض أن تقوم بإنشاء الجداول التالية التي تستخدم في قاعدة بيانات 3.5 ضغط ل SQL Server.
CREATE TABLE T1( C1 int, C2 int)GOCREATE INDEX IND_T1 ON T1 (C1, C2)GOCREATE TABLE T2( C1 int, C2 int)GOCREATE INDEX IND_T2 ON T2 (C1, C2)GOINSERT INTO T1 VALUES (1, 0)GOINSERT INTO T1 VALUES (2, 0)GOINSERT INTO T2 VALUES (1, -1)GOINSERT INTO T2 VALUES (2, 0)GO
ثم يمكنك تشغيل الاستعلام التالي:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]FROM T1 INNER JOIN T2 ONT1.C1 = T2.C1AND (T1.C2 = T2.C2 OR T2.C2 = -1)GO
بعد تشغيل الاستعلام، التي تتلقى النتيجة التالية غير صحيحة:
T1.C1T1.C2T2.C1T2.C2
2020
ومع ذلك، تتوقع النتيجة التالية:
T1.C1T1.C2T2.C1T2.C2
101-1
2020
ملاحظةتحدث هذه المشكلة أيضا عند استخدامحيثعبارة لتنفيذ جنبا إلى جنب منطقية على تعبيرين. على سبيل المثال، تحدث هذه المشكلة أيضا عند قيامك بتشغيل الاستعلام التالي:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]FROM T1 INNER JOIN T2 ONT1.C1 = T2.C1WHERE T1.C2 = T2.C2 OR T2.C2 = -1GO
الحل
يتم تضمين الإصلاح الذي يحل هذه المشكلة في حزمة التحديث التراكمي 4 ل SQL Server ضغط 3.5 Service Pack 2.

للحصول على مزيد من المعلومات حول كيفية الحصول على حزمة التحديث التراكمي 4 ل SQL Server ضغط 3.5 Service Pack 2، انقر فوق رقم المقالة التالي لعرض المقالة في قاعدة معارف Microsoft:
2516828 التحديث التراكمي 4 ل SQL Server ضغط 3.5 Service Pack 2
الحل البديل
لكي يعمل حول هذه المسألة, أعد كتابة الاستعلام باستخدام بإحدى الطرق التالية:

الطريقة الأولى

استخدم تلميحات الجدول في الاستعلام لتعطيل الفهارس. على سبيل المثال، قم بتشغيل الاستعلام التالي لتعطيل الفهارس:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]FROM T1 INNER JOIN T2 WITH (INDEX(0)) ONT1.C1 = T2.C1AND (T1.C2 = T2.C2 OR T2.C2 = -1)GO 

الطريقة الثانية

لإعادة الكتابة الاستعلام لتجنب الاجتماع الشروط التي يتم المذكورة في المقطع "Symptoms":
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]FROM T1 INNER JOIN T2 ON(T1.C1 = T2.C1 AND T2.C2 = -1) OR (T1.C1 = T2.C1 AND T1.C2 = T2.C2)
تصريح
تم تأكيد Microsoft أن هذه هي مشكلة في منتجات Microsoft المسردة في قسم "تنطبق على".

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

خصائص

رقم الموضوع: 2494715 - آخر مراجعة: 04/27/2011 09:17:00 - المراجعة: 2.0

  • kbfix kbqfe kbexpertiseadvanced kbsurveynew kbmt KB2494715 KbMtar
تعليقات
html>>yTagName("head")[0].appendChild(m);