PRB: مخطط تنفيذ "و" نتائج استعلامات تجميع تسلسل تعتمد على موقع تعبير

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

اضغط هنا لرابط المقالة باللغة الانجليزية287515
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
قد تواجه نتائج غير متوقعة عند تطبيق أي عوامل تشغيل أو التعبيرات ORDER BY استعلامات تجميع تسلسل. تعتمد نتائج استعلامات تجميع تسلسل في Microsoft SQL Server على أو لم يتم تطبيق تعبيرات SQL للعمليات إلى الأعمدة في جملة ORDER الاستعلام. للحصول على مزيد من المعلومات أو راجع مثال استعلام سلسلة تجميع وسلوك تعرض راجع القسم "مزيد من المعلومات" من هذه المقالة.
السبب
سلوك الصحيح استعلام تجميع تسلسل غير معرف.

كشف examination إخراج SHOWPLAN الاستعلام ينشئ المعالج استعلام SQL Server خطة تنفيذ مختلفة عند تعبيرات تطبيق إلى الأعمدة في الاستعلام ORDER BY ، من عندما يتم تطبيق تلك التعبيرات نفس إلى الأعمدة في قائمة SELECT في الاستعلام. قرار التي تم إجراؤها بواسطة معالج الاستعلام تستند تكلفة خطط التنفيذ المحتملة.

تتطلب مواصفات ANSI SQL-92 أي عمود المشار إليه بواسطة جملة ORDER BY تتطابق مع مجموعة النتائج المعرّفة بواسطة الأعمدة الموجودة في قائمة SELECT. عند تطبيق تعبير عضواً في جملة ORDER BY لا يتعرض هذا العمود الناتجة في قائمة SELECT مما يؤدي إلى سلوك غير معرّف.

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

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

استخدام البرنامج النصي Transact-SQL التالي إعادة إنشاء السلوك.

لاحظ التطبيق دالتي LTRIM و RTRIM إلى العمود [C1] في جملة ORDER مقابل قائمة SELECT.
IF EXISTS( SELECT * FROM sysobjects WHERE name = 'T1' )	DROP TABLE T1GOCREATE TABLE T1(  C1  NCHAR(1)  )SET NOCOUNT ONINSERT T1 VALUES( 'A' )INSERT T1 VALUES( 'B' )DECLARE @Str0 VARCHAR(4) DECLARE @Str1 VARCHAR(4) DECLARE @Str2 VARCHAR(4) SET @Str0 = ''SET @Str1 = ''SET @Str2 = ''SELECT @Str0 = @Str0 + C1 FROM T1 ORDER BY C1SELECT @Str1 = @Str1 + C1 FROM T1 ORDER BY LTRIM( RTRIM( C1 ) )SELECT @Str2 = @Str2 + LTRIM( RTRIM( C1 ) ) FROM T1 ORDER BY C1SELECT @Str0 'No functions applied to column.'SELECT @Str1 'LTRIM() and RTRIM() applied to ORDER BY clause.'SELECT @Str2 'SELECT list with LTRIM(RTRIM()) (Workaround)'IF @Str1 <> @Str2BEGIN   PRINT ''   PRINT 'Execution plan depends on where the functions are applied:'   PRINT '=========================================================='   PRINT ''   SET @Str1 = ''   SET @Str2 = ''   SET STATISTICS PROFILE ON   SELECT @Str1 = @Str1 + C1 FROM T1 ORDER BY LTRIM( RTRIM( C1 ) )   SELECT @Str2 = @Str2 + LTRIM( RTRIM( C1 ) ) FROM T1 ORDER BY C1   SET STATISTICS PROFILE OFFENDSET NOCOUNT OFFDROP TABLE T1				
غير معرف spec ANSI

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

خصائص

رقم الموضوع: 287515 - آخر مراجعة: 12/06/2015 00:18:38 - المراجعة: 3.2

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

  • kbnosurvey kbarchive kbmt kbcodesnippet kbprb KB287515 KbMtar
تعليقات