قد تفشل عامل دمج اثناء مزامنة النسخ المتماثل دمج في SQL Server

BUG #: 171429 (Content Maintenance)

الأعراض

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

فشل "عامل دمج" بعد الكشف عن ان تنظيف بيانات التعريف المستندة إلى الاستبقاء حذف بيانات التعريف في المشترك للتغييرات التي لم يتم إرسالها إلى Publisher. يجب أعاده تهيئه الاشتراك (بدون تحميل). (المصدر: MSSQL_REPL ، رقم الخطا: MSSQL_REPL-2147199401) الحصول علي المساعدة: http://help/MSSQL_REPL-2147199401

قد تحدث هذه المشكلة لأسباب متعددة. وتشمل هذه الأسباب الكثيرة المتوقعة في ظل ظروف معينه. لتحديد ما إذا كنت قد صادفت هذا الخطا بشكل غير متوقع ، فحص تفاصيل بيانات التعريف الموضحة في قسم "السبب".

السبب

يمكن العثور علي سبب هذه المشكلة في جداول النظام التالية علي المشترك:

  • dbo.sysMergeSubscriptions

  • dbo.MsMerge_Genhistory

تاكد من ان عامل دمج لم يعد مزامنة. ثم قم بتشغيل الاستعلام التالي ثم فحص النتائج:

حدد سينجين من المنخفضة. sysmergesubscriptions حيث pubid = subid و سينتجين غير nullQuery results العمود سينتجين علامات المجموعة الأقدم من التغييرات التي أرسلها المشترك إلى الناشر. إذا تم إرجاع قيم متعددة ، قم بفحص الاعمده الأخرى في الجدول dbo. Sysmergesubscriads للتاكد من انك تقوم بعرض بيانات التعريف للمنشور الصحيح. بعد ذلك ، استخدم القيمة التي يقوم هذا الاستعلام بإرجاعها في الاستعلام التالي:

حدد اعلي 20 * من المنخفض MSmerge_genhistory حيث > الجيل = sentgen_value ترتيب حسب الجيليجب ان يشبه إخراج الاستعلام ما يلي:Query result by generation قد تواجه الخطا بشكل غير متوقع عند تحققت كافة الشروط التالية:

  • القيمة في العمود الإنشاء في الصف الأول أكبر قليلا من قيمه سينتجين في الاستعلام السابق.

  • القيمة في العمود جينستاتوس هو 4.

  • القيمة في العمود تشانجيكونت هي 0.

ملاحظه قيمه عمود كولداتي من الصف الأول أيضا عاده أكبر بكثير من قيمه هذا العمود في الصفوف الأخرى.

الحل

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

معلومات التحديث التراكمي

SQL Server 2008

لا يوجد اي إصلاح لهذه المشكلة في SQL Server 2008.

حزمه الخدمة Service Pack 2 الخاصة ب SQL Server 2008 R2

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

2754552 حزمه التحديث التراكمي 3 ل SQL Server 2008 R2 service Pack 2ملاحظه لان البنيات تراكمية ، يحتوي كل إصدار إصلاح جديد علي كافة الإصلاحات العاجلة وإصلاح كافة تصحيحات الأمان التي تم تضمينها مع السابقة SQL Server 2008 R2 Service Pack 2 الإصدار. نوصي بالنظر في تطبيق أحدث إصدار إصلاح الذي يحتوي علي هذا الإصلاح العاجل. لمزيد من المعلومات ، انقر فوق رقم المقالة التالي لعرض المقالة في قاعده معارف Microsoft:

2730301 يتم إصدار sql Server 2008 r2 التي تم إصدارها بعد sql Server 2008 R2 service Pack 2

SQL Server 2012

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

2758687 حزمه التحديث التراكمي 4 ل SQL Server 2012ملاحظه لان البنيات تراكمية ، يحتوي كل إصدار إصلاح جديد علي كافة الإصلاحات العاجلة وإصلاح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2012 السابقة الإصدار. نوصي بالنظر في تطبيق أحدث إصدار إصلاح الذي يحتوي علي هذا الإصلاح العاجل. لمزيد من المعلومات ، انقر فوق رقم المقالة التالي لعرض المقالة في قاعده معارف Microsoft:

2692828 إنشاء sql server 2012 التي تم إصدارها بعد إصدار sql server 2012

حزمه الخدمة Service Pack 1 الخاصة ب SQL Server 2008 R2

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

2723743 حزمه التحديث التراكمي 8 ل SQL Server 2008 R2 SP1ملاحظه لان البنيات تراكمية ، يحتوي كل إصدار إصلاح جديد علي كافة الإصلاحات العاجلة وإصلاح كافة تصحيحات الأمان التي تم تضمينها مع السابق SQL Server 2008 R2 Service Pack 1 الإصدار. نوصي بالنظر في تطبيق أحدث إصدار إصلاح الذي يحتوي علي هذا الإصلاح العاجل. لمزيد من المعلومات ، انقر فوق رقم المقالة التالي لعرض المقالة في قاعده معارف Microsoft:

2567616 البناء sql Server 2008 r2 التي تم إصدارها بعد إصدار sql Server 2008 r2 SP1

Workaround

To work around this issue and recover from the merge agent failure, update the cleanedup_unsent_changes column and the genstatus column in the tables that you previously queried. To perform the updates, use queries such as the following:

update SubscriberDB.dbo.sysMergeSubscriptions set cleanedup_unsent_changes = 0 where sentgen = sentgen

update SubscriberDB.dbo.MSmerge_genhistory set genstatus = 2 where generation = first row from other queryFrom these example queries, the value of the sentgen placeholder would be 7253913 and the value of the first row from other query placeholder would be 7253914. Your values will be different.

After the tables are updated, restart the merge agent, and wait for synchronization to be complete. When synchronization is complete, run the following query again, and see whether the sentgen value increased:

select sentgen from SubscriberDB.dbo.sysMergeSubscriptions where pubid = subid and sentgen is not nullIf the agent is successful, and if the sentgen value increased, you successfully worked around the failure.

Author: jonclark
Writer: v-thomr
Tech Review: jonclark; ramakoni
Editor: v-anwale,v-rhowar

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

توسيع المهارات
استكشاف التدريب
الحصول على الميزات الجديدة أولاً
الانضمام إلى Microsoft Insider

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

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

شكراً لك على الملاحظات! يبدو أنه من المفيد إيصالك بأحد وكلاء دعم Office لدينا.

×