ويمكن تكرار عبارات UPDATE "أزواج" إدراج/حذف


ملخص


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

مزيد من المعلومات


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

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

مع ذلك، عند تنفيذ عبارة تحديث "تحديث مؤجلة"، يضع العامل logreader زوج من حذف/يستدعي إجراءإدراج المخزنة في قاعدة توزيع ليتم تطبيقها على المشتركين بدلاً من تحديث تخزين استدعاء الإجراء. على سبيل المثال، افترض أن لديك جدول نشر، يسمى "جدول 1"، بهذه الأعمدة الثلاثة:
  • int العمود 1
  • col2 int
  • col3 varchar(30).
يتم تعريف القيود الفريدة فقط على "جدول 1" في العمود 1 من خلال قيد مفتاح أساسي. افترض أن لديك سجل واحد (1, 1، 'دالاس').

عند تنفيذ هذه التعليمات البرمجية:
UPDATE TABLE1 set col1 = 3 where col2 = 'Dallas'
يتم تطبيق عبارة UPDATE بواسطة SQL Server كزوج من حذف/إدراج البيانات منذ أن تم تحديث العمود 1 تعريف فهرس فريد. وبالتالي، يضع logreader زوج من حذفإدراج يدعو في قاعدة التوزيع. هذا يمكن أن يؤثر أي منطق تسلسل العمل الموجودة في المشغلات أو الإجراءات المخزنة المخصصة لدى المشترك. ينبغي أن تتضمن منطق تسلسل عمل إضافي في مشغلات الحذف و الإدراج أو الإجراءات المخزنة للتعامل مع هذا الوضع.

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


في المثال السابق، يفترض أن يكون لديك عامل تصفية أفقية المحددة في جدول 1: حيث col2 = 'دالاس'. إذا قمت بتنفيذ هذه التعليمات البرمجية:
UPDATE table1 set col2 = 'New York' where col1 = 3
يضع عامل logreader استدعاء إجراء حذف مخزن ليتم تطبيقها على المشتركين نظراً لتحديث الصف غير مطابق لمعايير التصفية الأفقية.

الآن، إذا قمت بتنفيذ هذه التعليمات البرمجية:
UPDATE table1 set col2 = 'Dallas' where col1 = 3
ينشئ logreader فقط إدراج تخزين استدعاء الإجراء، منذ الصف لا تفي شرط عامل التصفية مسبقاً.

على الرغم من أنه تم تنفيذ عملية التحديث في Publisher، يتم تطبيق الأوامر المناسبة لدى المشترك.

المراجع


ل SQL Server 2000 Service Pack 1 أو الإصدار الأحدث، راجع المقالة التالية في "قاعدة المعارف ل Microsoft":
302341 INF: إشارة تتبع جديدة لتمكين التحديث مفردة للنسخ المتماثل للمعاملات