حذف صفوف من جدول SQL تم وضع علامة عليه للنسخ المتماثل

StackOverflow https://stackoverflow.com/questions/83475

سؤال

لقد قمت بحذف كافة الصفوف من جدول MS SQL 2000 المستخدم في النسخ المتماثل المدمج (الجدول موجود على الناشر) عن طريق الخطأ.ثم قمت بتفاقم المشكلة باستخدام عملية DTS لاسترداد الصفوف من قاعدة بيانات النسخ الاحتياطي وإعادة ملء الجدول.

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

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

هذه مشكلتي:لا يمكنني حذف الصفوف DTSED لأنني أحصل على "لا يمكن إدراج صف مفتاح مكرر في كائن" msmerge_tombstone "مع فهرس فريد" UC1Msmerge_Tombstone "." خطأ.ما أود القيام به هو بطريقة ما حذف الصفوف من الجدول لتجاوز مشغل النسخ المتماثل المدمج.هل هذا ممكن؟لا أريد إزالة النسخ المتماثل وإعادة إجرائه لأن المشتركين هم أكثر من 50 جهازًا يعمل بنظام Windows Mobile.

يحرر:لقد حاولت الأمر Truncate Table.وهذا يعطي الخطأ التالي "لا يمكن اقتطاع الجدول xxxx لأنه تم نشره للنسخ المتماثل"

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

المحلول 6

شكرًا على النصائح...لقد وجدت الحل أخيرًا:

لقد قمت بحذف مشغل حذف الدمج من الجدول
تم حذف صفوف DTSed
إعادة إنشاء مشغل حذف الدمج
أضفت صفوفي بشكل صحيح باستخدام عبارة الإدراج.

لقد كنت قلقًا بعض الشيء بشأن العبث بمشغلات الدمج ولكن كل شيء يبدو أن تعمل بشكل صحيح.

نصائح أخرى

هل حاولت اقتطاع الجدول؟

قد تضطر إلى اقتطاع الجدول وإعادة تعيين حقل المعرف مرة أخرى إلى 0 إذا كنت تريد أن يكون للصفوف المدرجة نفس المعرف.إذا لم يكن الأمر كذلك، فما عليك سوى اقتطاع الأمر ويجب أن يكون على ما يرام.

يمكنك أيضًا النظر في إسقاط الفهرس الفريد مؤقتًا وإضافته مرة أخرى عند الانتهاء.

ابحث في sp_mergedummyupdate

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top