يمكن النسخ المتماثل لـ SQL Server تشمل المصدر dbid في نسخ البيانات ؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

دعونا نقول لدي DatabaseA مع TableA ، التي لديها هذه المجالات:معرف الاسم.

في قاعدة بيانات أخرى ، DatabaseB لدي TableA التي لديها هذه المجالات:DatabaseId, Id, Name.

هل من الممكن إعداد النسخ المتماثل النشر التي سوف ترسل:

DatabaseA.dbid, DatabaseA.TableA.معرف DatabaseA.TableA.اسم

إلى DatabaseB.TableA?

تحرير:سبب سؤالي هو أنني بحاجة إلى الجمع بين قواعد بيانات متعددة (متطابقة مع المخططات) في قاعدة بيانات واحدة ، مع القليل من الكمون ممكن.النسخ المتماثل يبدو مثل مكان جيد للبدء (الحاجة إلى نسخ البيانات من مكان إلى آخر) ، ولكن أنا في مرحلة العصف الذهني.بالتأكيد سوف تكون مفتوحة اقتراحات بشأن كيفية تحقيق ذلك بدون استخدام النسخ المتماثل.

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

المحلول

قد يكون هناك طريقة أسهل للقيام بذلك، ولكن أول شيء فكرت والتفاف TableA في طريقة عرض مفهرسة على قاعدة البيانات المصدر ثم تكرار عرض كجدول (أي نوع = "عرض مفهرسة logbased") . أنا لا أعتقد أن هذا سيعمل مع دمج النسخ المتماثل، وإن كان.

وهكذا، من شأنه أن يكون تقريبا مثل:

CREATE VIEW TableA_with_dbid WITH SCHEMABINDING AS
SELECT DatabaseA.dbid, Id, Name FROM TableA

CREATE UNIQUE CLUSTERED INDEX ON TableA_with_dbid (Id) -- or whatever your PK is

EXEC sp_addarticle ...,
    @source_object = 'TableA_with_dbid',
    @destination_table = 'TableA',
    @type = 'indexed view logbased',
    ...

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

(وردا على تحرير في سؤالك ...) وهذا لن يعمل للجمع بين مصادر متعددة في جدول واحد. AFAIK، كائن في قاعدة البيانات المشتركة يمكن أن تأتي إلا من واحد المادة المنشورة. وأنت لا تستطيع أن تفعل وجهة نظر فهرستها على الجانب اشتراك لأنه لا يسمح UNION في طريقة عرض مفهرسة. (ومستندات لا تنص صراحة هو مسموح UNION ALL، لكنه لن يفاجئني قد تحاول ذلك فقط في حالة..) ولكن كان لا يزال إجابة عن سؤال صريح منك: ان dbid يكون في الجدول المنسوخ

نصائح أخرى

هل تجميع هذه الأحداث في مكان واحد من عدة مصادر ؟ تكرار لا يأتي إلا من مصدر واحد - واحد-إلى-واحد لذا مصدر معرف لا يبدو مثل ذلك من شأنه أن يجعل الكثير من معانيها.

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

إذا كان يمكنك توضيح سؤالك لوصف الغرض ، سوف تساعدنا في العثور على أفضل حل.

تحديث من التفصيل في المسألة:

هل هذا الحل يبدو أنه قد يكون ما تحتاجه ؟

  1. بعد يطلق على المصدر قواعد البيانات التي ترسل أي تغيير الصفوف إلى مستودع مركزي بيانات في نوع من عقد الجدول.هذه الصفوف يمكن أن تشمل أعمدة إضافية ، مثل "مصدر" ، "تغيير نوع" (على إدراج أو حذف ، إلخ).
  2. بعض المركزي عملية الساعات الطاولة وعمليات جديدة الصفوف (أو يعمل بشكل دوري مرة/دقيقة, ربما) ، إدراجها في قاعدة البيانات المركزية

يمكنك ضبط كيف في كثير من الأحيان الاختيار/دمج عملية يتم تشغيلها على الملقم على أساس الاحتياجات الخاصة بك (حتى تشغيله باستمرار التعامل مع الصفوف الجديدة كما تظهر ، وربما حتى مع بعد الزناد في هذا الجدول كذلك).

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