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

FIX: نتائج غير صحيحة عند استخدام الأقواس حول SELECT في بيان الذي يحتوي على تعبير جدول شائعة في SQL Server 2008

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

اضغط هنا لرابط المقالة باللغة الانجليزية2322209
الأعراض
On a computer that is running Microsoft SQL Server 2008, consider the following scenarios.

Scenario 1

You specify a common table expression (CTE) by using the WITH statement. For example, you run the following query.
WITH common_table_expression AS (SELECT * FROM sys.objects)(SELECT * FROM common_table_expression)
Then, you run this query.
SELECT *FROM sys.dm_exec_query_statsWHERE statement_start_offset > statement_end_offsetANDstatement_end_offset <> -1
In this scenario, the cached query plan for this query stores incorrect statement_start_offset and statement_end_offset values. وبوجه خاص، لاحظ القيمة statement_end_offset أصغر من القيمة statement_start_offset عندما تقوم بتشغيل طريقة عرض إدارة حيوي sys.dm_exec_query_stats (DMV).

سبب لهذه المشكلة، قد تفشل تقرير أداء عند التقرير يفترض أن تكون قيمة statement_start_offset دوماً أقل من قيمة statement_stop_offset.

السيناريو 2

تعيين تعبير جدول شائعة باستخدام العبارة مع، واستخدام الخيار RECOMPILE. على سبيل المثال، يمكنك إنشاء دالة في SQL Server 2008 باستخدام script. التالية
CREATE FUNCTION function1() RETURNS int ASBEGINDECLARE @x intSET @x=1;WITH common_table_expression AS (SELECT @x AS column1) (SELECT @x=column1 FROM common_table_expression) OPTION(RECOMPILE)RETURN @xEND
عند تشغيل استعلام“ حدد dbo.function1() ”، تتلقى رسالة الخطأ التالية:
حدث خطأ هام أ في الأمر الحالي. النتائج، أن وجدت، يجب أن يتم تجاهل.

بالإضافة إلى ذلك، يمكن أن يحدث هذا الخطأ دون الخيار RECOMPILE حالة ملقم SQL الملقم كثيف حركة المرور.

السيناريو 3

تعيين تعبير جدول شائعة باستخدام العبارة مع . في العبارة مع، يجب تحديد جدول غير موجود. على سبيل المثال، يمكنك تشغيل الاستعلام التالي.
WITH computed_table (id) AS(SELECT id FROM this_table_does_not_exist) (SELECT id FROM dbo.computed_table) GO
عندما تقوم بتشغيل هذا الاستعلام، عدم ظهور خطأ للجدول مفقود.
السبب
تحدث هذه المشكلات بسبب معالجة بها خلل من عبارة SELECT التي تلي عبارة مع. تستخدم العبارة مع بناء الجملة التالي.
WITH common_table_expression AS(CTE_query_definition)
هذه العبارة ثم يقوم بإنشاء مجموعة نتائج التي تم تعيينها إلى اسم الجدول الشائعة للتعبير الذي تم تحديده. بعد ذلك، اتبع هذا البيان بعبارة SELECT. إذا كان هذا البيان الثاني بين أقواس، ثم محاولة إجراء عملية على النتائج أو عند محاولة تشغيل طريقة عرض إدارة حيوي sys.dm_exec_query_stats، تتلقى نتائج غير صحيحة أو على خطأ.
الحل
تم حل هذه المشاكل في SQL Server 2008 Service Pack 2 CTP. قم بتحميل وتثبيت أحدث إصدار SQL Server 2008 الخدمة حزمة.
968382كيفية الحصول على أحدث حزمة خدمة ل SQL Server 2008
يمكن تحميل SQL Server 2008 Service Pack 2 CTP مباشرة من مركز التحميل Microsoft Office 2010 Suite:
الحل البديل
لحل هذه المشكلات، يجب عليك إزالة الأقواس من العبارة التي تلي التعبير الجدول الشائعة. على سبيل المثال، يجب مراعاة ما يلي WITH العبارة التي يستخدمها مثل الأقواس.
WITH common_table_expression AS (SELECT *FROM sys.objects)(SELECT * FROM common_table_expression)
لحل هذه المشكلات، تغيير لما يلي WITH العبارة التي لا تستخدم هذه الأقواس.
WITH common_table_expression AS (SELECT *FROM sys.objects)SELECT * FROM common_table_expressio
تصريح
Microsoft Office 2010 Suite أقرت أن هذه المشكلة تحدث في منتجات Microsoft Office 2010 Suite المسردة في قسم "تنطبق علي".
معلومات أخرى
لمزيد من المعلومات حول كيفية استخدام العبارة مع تعبير شائعة من جدول، قم بزيارة صفحة ويب MSDN التالي:للحصول على مزيد من المعلومات حول sys.dm_exec_query_stats، قم بزيارة صفحة ويب MSDN التالي:
استعلام رمز cte sql

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

خصائص

رقم الموضوع: 2322209 - آخر مراجعة: 08/31/2010 20:34:00 - المراجعة: 1.0

Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Workgroup

  • kbqfe kbfix kbexpertiseadvanced kbsurveynew kbtshoot kbquery kbmt KB2322209 KbMtar
تعليقات
/html>html>">t/JavaScript" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("