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

يتم تجاهل الخاصية Max_Queue_Readers عند محاولة تحديد مهام التنشيط في Service Broker

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

اضغط هنا لرابط المقالة باللغة الانجليزية3163368
الأعراض
يرجى مراعاة السيناريو التالي:
  • يمكنك استخدام Service Broker في 2014 خادم Microsoft SQL أو Microsoft SQL Server 2012.
  • تعيين Service Broker لتنفيذ الإجراء المخزن غير متزامنة.
  • تعيين الخاصية Max_Queue_Readers إلى قيمة محددة لقائمة انتظار Service Broker للحد من عدد مثيلات تنشيط إجراء تشغيل في نفس الوقت مخزن
في هذا السيناريو، لاحظت أن أكثر تنشيط مهام التشغيل من القيمة التي تم تعيينها لMax_Queue_Readers.
السبب
قد تحدث هذه المشكلة إذا كان يتم التبديل Service Broker قاعدة البيانات من وضع المستخدم الفردي (RESTRICTED_USER) لوضع متعددة المستخدمين (MULTI_USER) بتشغيل ما يلي:

alter database <dbname> set multi_user
عند تغير وضع المستخدم في قاعدة البيانات، يتم إيقاف تشغيل Service Broker وإعادة تشغيله. أثناء هذه العملية، يتم إسقاط الكائن كويويمونيتور الموجود، ويتم إنشاء مثيل آخر للكائن كويويمونيتور. في حالة تشغيل عملية تنشيط عملية طويلة أثناء إيقاف تشغيل Service Broker، الكائن كويويمونيتور يتم تغيير الحالة إلى "المسلمة".

ومع ذلك، لا يتم حذف مثيل الكائن كويويمونيتور موجودة لأنه لم يصل عدد المراجع الخاصة به إلى الصفر. في حالة إجراء عملية التنشيط قيد التشغيل عند إعادة تشغيل Service Broker، مثيل جديد من الكائن كويويمونيتور والكائن كويويمونيتور المسلمة سوف تتعايش في نفس قائمة الانتظار. سيتم حذف مثيل الكائن كويويمونيتور المسلمة في المرة التالية التي يبدأ تشغيل Service Broker.
الحل البديل
قيد التشغيل للتغلب على هذه المشكلة، تأكد من تشغيل "تغيير قاعدة البيانات [dbname] مجموعة multi_user" عندما لا يوجد إجراء تنشيط. للقيام بذلك، استخدم إحدى الطرق التالية:

  • قبل تغيير وضع المستخدم، قم بتعطيل كافة قوائم انتظار في قاعدة البيانات وقم بإعادة تمكين كافة قوائم الانتظار.
  • قبل تغيير وضع المستخدم، تعطيل عملية التنشيط لقوائم الانتظار المتأثرة عن طريق تشغيل الأمر التالي ثم قم بإعادة تمكين إجراء التنشيط:

    alter queue <queueName> with activation ( status = off)
معلومات أخرى
يمكنك التحقق من العدد من الإجراءات التنشيط التي تعمل لقائمة انتظار معينة عن طريق تشغيل استعلام مقابل "sys.dm_broker_activated_tasks" كما يلي:

select * from sys.dm_broker_activated_tasks where queue_id = <queue number>
يمكنك الاستعلام عن حالة مراقبة قائمة انتظار بتشغيل الاستعلام التالي:

Select * from sys.dm_broker_queue_monitors where queue_id = <queue number>
يتم عرض حالة مراقبة قائمة انتظار كما "إسقاط" إذا تم تغيير وضع قاعدة بيانات المستخدم.

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

خصائص

رقم الموضوع: 3163368 - آخر مراجعة: 05/19/2016 18:14:00 - المراجعة: 1.0

Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Enterprise, Microsoft SQL Server 2016 Standard, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Enterprise Core, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Workgroup

  • kbprb kbsurveynew kbexpertiseadvanced kbmt KB3163368 KbMtar
تعليقات
>tml> © 2016 Microsoft