تخطي إلى المحتوى الرئيسي
الدعم
تسجيل الدخول باستخدام حساب Microsoft
تسجيل الدخول أو إنشاء حساب.
مرحباً،
تحديد استخدام حساب مختلف!
لديك حسابات متعددة
اختر الحساب الذي تريد تسجيل الدخول باستخدامه.

الأعراض

علي جهاز كمبيوتر يعمل بنظام التشغيل Microsoft SQL Server 2008 ، ضع في اعتبارك السيناريوهات التالية.

السيناريو 1

تقوم بتحديد تعبير جدول شائع (CTE) باستخدام جمله WITH. علي سبيل المثال ، يمكنك تشغيل الاستعلام التالي.

WITH common_table_expression AS (SELECT * FROM sys.objects)(SELECT * FROM common_table_expression)

بعد ذلك ، قم بتشغيل هذا الاستعلام.

SELECT *FROM sys.dm_exec_query_statsWHERE statement_start_offset > statement_end_offsetANDstatement_end_offset <> -1

في هذا السيناريو ، تخزن خطه الاستعلام المخزنة مؤقتا لهذا الاستعلام القيم غير الصحيحة statement_start_offset و statement_end_offset. بشكل خاص ، تلاحظ ان القيمة الstatement_end_offset أصغر من قيمه الstatement_start_offset عند sys.dm_exec_query_stats تشغيل طريقه عرض الاداره الديناميكية (دمف). نظرا لهذه المشكلة ، قد يفشل تقرير الأداء عندما يفترض التقرير ان القيمة الstatement_start_offsetه تكون دائما أصغر من قيمه الstatement_stop_offset.

السيناريو 2

تقوم بتحديد تعبير جدول شائع باستخدام جمله WITH ، وتستخدم الخيار أعاده التحويل البرمجي. علي سبيل المثال ، يمكنك إنشاء داله في SQL Server 2008 باستخدام البرنامج النصي التالي.

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.bigtable function1 ()" ، تتلقي رسالة الخطا التالية:

حدث خطا هام في الأمر الحالي. يجب تجاهل النتائج ، إذا كانت هناك.

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

السيناريو 3

يمكنك تحديد تعبير جدول شائع باستخدام جمله WITH. في العبارة WITH ، يمكنك تحديد جدول غير موجود. علي سبيل المثال ، يمكنك تشغيل الاستعلام التالي.

WITH computed_table (id) AS(SELECT id FROM this_table_does_not_exist) (SELECT id FROM dbo.computed_table) GO

عند تشغيل هذا الاستعلام ، لن تتلقي رسالة خطا للجدول المفقود.

السبب

تحدث هذه المشكلات بسبب عدم القدرة علي معالجه جمله SELECT التي تلي الجملة WITH. تستخدم جمله WITH بناء الجملة التالي.

WITH common_table_expression AS(CTE_query_definition)

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

الحل

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

968382 كيفيه الحصول علي أحدث حزمه خدمه ل SQL Server 2008

الحل البديل

لحل هذه المشاكل ، يجب أزاله الأقواس من الجملة التي تلي تعبير الجدول الشائع. علي سبيل المثال ، ضع في اعتبارك ما يلي مع العبارة التي تستخدم الأقواس.

WITH common_table_expression AS (SELECT *FROM sys.objects)(SELECT * FROM common_table_expression)

لحل هذه المشاكل ، يمكنك التغيير إلى العبارة التالية التي لا تستخدم هذه الأقواس.

WITH common_table_expression AS (SELECT *FROM sys.objects)SELECT * FROM common_table_expressio

الحالة

أقر Microsoft ان هذه المشكلة في منتجات Microsoft المسرده في القسم "ينطبق علي". تم تصحيح هذه المشكلة أولا في SQL Server 2008 Service Pack 2 (SP2).

مزيد من المعلومات

للحصول علي مزيد من المعلومات حول كيفيه استخدام جمله WITH مع تعبير جدول شائع ، قم بزيارة صفحه MSDN التالية:

مع common_table_expression (اللعمليات-SQL)لمزيد من المعلومات حول sys.dm_exec_query_stats ، قم بزيارة صفحه ويب التالية في MSDN:

sys.dm_exec_query_stats (اللعمليات-SQL)

هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.

تساعدك المجتمعات على طرح الأسئلة والإجابة عليها، وتقديم الملاحظات، وسماعها من الخبراء ذوي الاطلاع الواسع.

هل كانت المعلومات مفيدة؟

ما مدى رضاك عن جودة اللغة؟
ما الذي أثّر في تجربتك؟
بالضغط على "إرسال"، سيتم استخدام ملاحظاتك لتحسين منتجات Microsoft وخدماتها. سيتمكن مسؤول تكنولوجيا المعلومات لديك من جمع هذه البيانات. بيان الخصوصية.

نشكرك على ملاحظاتك!

×