الأعراض
يُرجى مراعاة السيناريو التالي:
أنت تقوم بتشغيل Microsoft SQL Server 2014 أو Microsoft SQL Server 2012 Service Pack 2 (SP2) على خادم يستضيف النسخة المتماثلة الثانوية لمجموعة توفر كجزء من ترقية متنقلة.
لقد قمت بتطبيق أحد التحديثات التالية على تثبيت SQL Server:
- التحديث التراكمي 5 ل SQL Server 2014
- SQL Server 2012 Service Pack 2 التحديث التراكمي 4
- SQL Server 2012 Service Pack 2 التحديث التراكمي 3
هام يحل الإصلاح العاجل المذكور في هذه المقالة محل هذه التحديثات التراكمية. لا تقم بتثبيت هذه التحديثات إذا لم تكن قد قمت بذلك بالفعل.
لإنهاء تثبيت التحديث التراكمي، يجب إعادة تشغيل هذه النسخة المتماثلة الثانوية.
تفشل في تجاوز مجموعة الإتاحة التي تقوم بنقل النسخة المتماثلة الثانوية المحدثة إلى الدور الأساسي.
في هذا السيناريو، قد تواجه عرضا واحدا أو أكثر من الأعراض التالية على الخادم الذي يقوم بتشغيل SQL Server والذي يستضيف الآن النسخة المتماثلة الأساسية لمجموعة التوفر الخاصة بك:
يتم الإبلاغ عن النسخ المتماثلة الثانوية على أنها "غير متزامنة".
عند الاستعلام عن sys.dm_exec_requests، تلاحظ حظر التأمين المتقطع بين جلسات عمل المستخدمين وجلسة عمل يتم الإبلاغ عن أمرها ك "DB_STARTUP". قد تلاحظ أيضا الحجب بين أوامر CHECKPOINT و DB_STARTUP.
يتم الإبلاغ عن حالات التوقف التام التي تنطوي على جلسة العمل التي استعادت إحدى قواعد بيانات التوفر الخاصة بك في سجل أخطاء SQL Server. تشبه هذه السجلات ما يلي:
<التاريخ والوقت> spid<xx> يكتب الاسترداد نقطة تحقق في قاعدة البيانات <dbname/dbid>. هذا هو
رسالة إعلامية فقط. ليس هناك إجراء مطلوب من قبل المستخدم.
<التاريخ والوقت> spid<xx> اكتمل الاسترداد لقاعدة البيانات <dbname/dbid> في <x> ثانية (ثوان) (تحليل)
<x> مللي ثانية، إعادة <x> مللي ثانية، تراجع <x> مللي ثانية.) هذه رسالة إعلامية فقط. ليس هناك إجراء مطلوب من قبل المستخدم.
…
<التاريخ / الوقت> spid<xx> الخطأ: 1205 ، الخطورة: 13 ، الحالة: 28.
<التاريخ/الوقت> spid<xx> كانت المعاملة (معرف <العملية xx>) قيد الوصول إلى طريق تام عند تأمين الموارد مع آخر
وقد تم اختياره كضحية للطريق المسدود. إعادة تشغيل المعاملة.إذا تم تمكين قاعدة بيانات التوفر ل Microsoft SQL Server Service Broker، فقد لا تتم معالجة الرسائل الموجودة في قاعدة بيانات التوفر بنجاح. إذا قمت بتشغيل أداة تتبع محلل التعريف، ثم قمت بالتقاط الحدث "Broker:Message Classify"، يتم التقاط الحدث التالي:
9791، تم تعطيل الوسيط في قاعدة بيانات المرسل
ملاحظة: هذه ليست مشكلة منهجية. قد تتمكن من تطبيق هذه التحديثات التراكمية على تكوين AlwaysOn دون مواجهة هذه المشكلة. إذا قمت بالفعل بتطبيق هذه التحديثات التراكمية، ولم تلاحظ هذه المشكلة، فلن يتأثر النظام الخاص بك ولا تنطبق هذه المعلومات عليك.
السبب
تحدث هذه المشكلة نظرا لحدوث حالة سباق في بعض الأحيان بين مؤشرات ترابط النظام واتصالات المستخدم. وهذا يمنع منطق التصحيح للتحديث التراكمي من الحصول على التأمينات المطلوبة لإكمال عملية التحديث.
الدقة
لحل هذه المشكلة، قم بتطبيق الإصلاح العاجل حسب الطلب (COD) التالي:
3034679 تصحيح: قد يتم الإبلاغ عن مجموعات توفر AlwaysOn على أنها غير متزامنة
هام يجب تطبيق هذا الإصلاح العاجل ل COD بدلا من التحديثات التراكمية التالية:
- التحديث التراكمي 5 ل SQL Server 2014
- SQL Server 2012 Service Pack 2 التحديث التراكمي 4
- SQL Server 2012 Service Pack 2 التحديث التراكمي 3
ملاحظة إذا قمت بالفعل بتطبيق هذه التحديثات التراكمية، فيجب استخدام الحل البديل التالي لحل هذه المشكلة.
الحل البديل
نظرا لأن هذه المشكلة ناتجة عن وجود خلاف بين جلسة عمل المستخدم وجلسة الترقية مقابل قواعد البيانات المتوفرة أثناء انتقال قواعد البيانات إلى الدور الأساسي، يجب إزالة هذا الخلاف لتمكين قواعد البيانات من الاسترداد من هذه الحالة.
لحل هذه المشكلة، اتبع الخطوات التالية:
جرب الطرق التالية بالترتيب الوارد.
الطريقة الأولى: التخلص من الوصول إلى قاعدة البياناتعندما تواجه قواعد البيانات الأعراض المذكورة في قسم "الأعراض"، استخدم إحدى الخطوتين التاليتين أو كليهما عند الضرورة لإزالة حالة حظر التأمين:
- sys.dm_exec_requests الاستعلام لتحديد موقع جلسات العمل التي يحدث فيها حظر التأمين في قواعد بيانات التوفر. استخدم عبارة KILL لإنهاء جلسات العمل هذه.
- تعطيل التطبيق الذي يصل إلى قواعد بيانات التوفر أو إيقافه.
إذا لم يصلح الطريقة 1 المشكلة، فانتقل إلى الطريقة الثانية.
الطريقة 2: إعادة تشغيل خادم مضيف SQL Server عندما لا يزال وصول المستخدم والوصول إلى التطبيق معطلين، أعد تشغيل مثيل SQL Server الذي يستضيف قواعد بيانات التوفر المتأثرة. اتبع هذه الخطوات للقيام بذلك:
- تعطيل تجاوز الفشل التلقائي لمجموعة التوفر.
- أعد تشغيل المثيل المتأثر من SQL Server الذي يستضيف النسخة المتماثلة الأساسية.
- تمكين تجاوز الفشل التلقائي لمجموعة التوفر.
بعد استرداد قواعد البيانات المتأثرة بشكل كامل، قم بإعادة إنشاء اتصال المستخدم والتطبيق.
الحالة
لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".
المراجع
لمزيد من المعلومات حول التحديثات التراكمية التي تتأثر بهذه المشكلة، راجع المقالات التالية في "قاعدة معارف Microsoft":