Applies ToSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

الأعراض

عند استخدام النسخ المتطابقة لقاعده البيانات في Microsoft SQL Server 2012 أو Microsoft SQL Server 2014 ، قد تصيب شرط تاكيد ويتم إدخال نسخ متطابقة لقاعده البيانات إلى حاله التوقف.

السبب

تحدث هذه المشكلة عند تخصيص صفحه جديده ، يحصل SQL Server علي تامين X علي الصفحة الجديدة. سيضع SQL Server الhobt_id (كومه الذاكرة المؤقتة أو معرف الشجرة) التي تنتمي اليها الصفحة الجديدة في طلب التامين. ومع ذلك ، لا يمكن ان يضع SQL Server الhobt_id في سجل الانعكاس وينتج عنه سلوك تامين مختلف بين الأساسي والنسخة المتطابقة. يمكن شرح هذا بالتفصيل كما يلي:

  1. في T1 ، اضغط علي مفتاح تامين إيكس علي الصفحة P1.

  2. T2 تنفيذ تقسيم الصفحة علي P1 ، وتخصيص صفحه جديده P2 ، يتم استخدام معامله النظام TX هنا ، وهي تحتوي علي X قفل في P2. هنا لم يقم SQL Server بوضع الhobt_id في سجل النسخ المتطابقة.

  3. TX يقوم الترحيل المؤمن ل T1 بنقل تامين إيكس من P1 إلى P2.

  4. تم منح TX ، يمكن الآن ل T2 استخدام الصفحة P2 ، و T2 الحصول علي تامين إيكس آخر في الصفحة P2.

  5. تم منح T1 ، والآن يكون الخيار T2 هو الذي يحتفظ بقفل ايكس في P2.

  6. بعد الانتهاء من الادراج ، يحدث تصعيد تامين ، في الأساسي ، T2 يقوم بتحرير الايكس في P2 ، ولكن علي النسخة المتطابقة اثناء تصعيد lock ، T2 لم تصدر القفل الايكس.

  7. بعد الانتهاء من عمليه الحذف ، تصبح الصفحة P2 فارغه وهي ديلوكاتيد.

  8. يحتاج T3 إلى صفحه جديده ، ويحدث ذلك لتخصيص P2 ، يتطلب هذا الاجراء قفل X ، ولكن علي النسخة المتطابقة ، فشل هذه الخطوة بسبب الخطوة 6.

في النسخة المتطابقة ، لا تصدر الخطوة 6 القفل إيكس لان الhobt_id الموجودة في كتله التامين غير صحيحه. ياتي هذا الhobt_id غير الصحيحة في الخطوة 2 ونظرا لعدم قيام SQL Server بوضع الhobt_id في السجل المتطابق. عاده لا تري اي مشكله بسبب ان TX في الخطوة 2 قصير جدا ، سيتم تحرير كتله التامين باستخدام الhobt_id غير الصحيح عند التزام. ومع ذلك ، بسبب الترحيل المقفل في step3 والخطوات التالية (4 و 5) ، يتم الاحتفاظ بكتله التامين هذه مع hobt_id غير صحيحه وأخيرا تؤدي إلى حدوث المشكلة. لم تحدث هذه المشكلة لأنها تستخدم hobt_id صحيحه في الخطوة 2. ولكن سجل السجل ليس لديه hobt_id صحيحه.

يحتوي كل تحديث تراكمي جديد ل SQL Server علي كل الإصلاحات العاجلة وكل تصحيحات الأمان التي تم تضمينها في التحديث التراكمي السابق. اطلع علي آخر التحديثات التراكمية ل SQL Server:

الحل البديل

لحل هذه المشكلة ، قم باعاده تهيئه النسخة المتطابقة لإنهاء الحالة المعلقة.

الحالة

أقرت Microsoft أن هذه المشكلة تحدث في منتجات Microsoft المسردة في المقطع "تنطبق على".

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

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

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

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