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

FIX: استعلام SELECT بشكل غير متوقع إرجاع عدد غير صحيح من الصفوف في SQL Server 2005 المحمول Edition وفي SQL Server 2005 ضغط Edition

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

اضغط هنا لرابط المقالة باللغة الانجليزية933697
الأعراض
عند تشغيل استعلام SELECT في Microsoft SQL Server 2005 المحمول Edition وفي Microsoft SQL Server 2005 ضغط Edition الاستعلام بشكل غير متوقع إرجاع عدد غير صحيح من الصفوف. تحدث هذه المشكلة إذا تحققت الحالتين التاليتين:
  • يحتوي الاستعلام SELECT على صلة داخلية.
  • أحد الجدولين المنضمة يحتوي على فهرس على العمود المرتبط. يحتوي جدول أخرى ولا يوجد فهرس على أي من الأعمدة الخاصة به.
على سبيل المثال، تشغيل الاستعلام التالي في SQL Server 2005 المحمول Edition:
select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
ملاحظة في هذا المثال الجدول T1 يحتوي فهرس على عمود لا يحتوي عمود... جدول T2 فهرس على العمود عمود1.
السبب
تحدث هذه المشكلة بسبب للمحسن استعلام لا تجاهل خطة السابقة بشكل كامل. يعتبر للمحسن الاستعلام متعددة خطط الاستعلام قبل أن يقرر للمحسن الاستعلام على خطة أفضل لتنفيذ استعلام. في بعض الحالات، يمكن العثور على للمحسن الاستعلام خطة يستخدم فهرس لتقييم الشرط. ومع ذلك، قد للمحسن الاستعلام تجد خطة أفضل لاحقاً. في هذه الحالة، يتجاهل للمحسن الاستعلام خطة السابقة لاستخدام خطة أفضل.
الحل
لحل هذه المشكلة، استخدم إحدى الطرق التالية:
  • إنشاء فهرس على العمود المرتبط في الجدول الثاني.
  • حذف فهرس العمود المرتبط في الجدول الأول.
ملاحظة في المثال في قسم "الأعراض" هو العمود المرتبط في الجدول الثاني T2.Col1. العمود المرتبط في الجدول الأول هو T1.Col.
تصريح
أقرت Microsoft أن هذا خطأ في منتجات Microsoft المسردة في قسم "تنطبق على".
معلومات أخرى

خطوات إعادة إنشاء المشكلة

  1. تشغيل العبارات التالية مقابل قاعدة بيانات في SQL Server 2005 المحمول Edition:
    CREATE TABLE T1 (COL INT);GO;CREATE INDEX T1_IDX ON T1 (COL);GO;INSERT INTO T1 VALUES (1);INSERT INTO T1 VALUES (2);INSERT INTO T1 VALUES (3);GO;CREATE TABLE T2 (COL1 INT, COL2 INT);GO;INSERT INTO T2 VALUES (1,1);INSERT INTO T2 VALUES (2,2);INSERT INTO T2 VALUES (3,3);GO;
  2. تشغيل العبارة التالية:
    select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
    تواجه المشكلة الموضحة في قسم "الأعراض".

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

خصائص

رقم الموضوع: 933697 - آخر مراجعة: 03/13/2007 19:39:22 - المراجعة: 1.2

Microsoft SQL Server 2005 Mobile Edition, Microsoft SQL Server 2005 Compact Edition

  • kbmt kbtshoot kbexpertiseadvanced kbbug KB933697 KbMtar
تعليقات
mentsByTagName("head")[0].appendChild(m);