Freigeben über


Mergereplikation

Die Zusammenführungsreplikation beginnt, ähnlich wie die Transaktionsreplikation, in der Regel mit einer Momentaufnahme der Publikationsdatenbankobjekte und -daten. Nachfolgende Datenänderungen und Schemaänderungen, die an Publisher und Abonnenten vorgenommen werden, werden mit Triggern nachverfolgt. Der Abonnent synchronisiert sich mit dem Publisher, wenn eine Verbindung mit dem Netzwerk hergestellt wurde, und tauscht alle Zeilen aus, die seit der letzten Synchronisierung zwischen Publisher und Abonnenten geändert wurden.

Die Zusammenführungsreplikation wird in der Regel in Server-zu-Client-Umgebungen verwendet. Die Mergereplikation ist in den folgenden Situationen geeignet:

  • Mehrere Abonnenten können die gleichen Daten zu verschiedenen Zeiten aktualisieren und diese Änderungen an den Herausgeber und an andere Abonnenten weitergeben.

  • Abonnenten müssen Daten empfangen, Änderungen offline vornehmen und später Änderungen mit Publisher und anderen Abonnenten synchronisieren.

  • Jeder Abonnent erfordert eine andere Datenpartition.

  • Konflikte können auftreten, und wenn sie dies tun, benötigen Sie die Möglichkeit, sie zu erkennen und zu lösen.

  • Für die Anwendung sind Nettodatenänderungen erforderlich, anstatt auf Zwischendatenzustände zuzugreifen. Wenn sich beispielsweise eine Zeile fünfMal bei einem Abonnenten ändert, bevor sie mit einem Publisher synchronisiert wird, ändert sich die Zeile nur einmal im Publisher, um die Nettodatenänderung widerzuspiegeln (d. s. der fünfte Wert).

Die Zusammenführungsreplikation erlaubt es verschiedenen Instanzen, eigenständig zu arbeiten und später Aktualisierungen in einem einzigen, einheitlichen Ergebnis zusammenzuführen. Da Aktualisierungen an mehreren Knoten vorgenommen werden, wurden dieselben Daten möglicherweise vom Publisher und von mehr als einem Abonnenten aktualisiert. Daher können Konflikte auftreten, wenn Updates zusammengeführt werden, und die Zusammenführungsreplikation bietet eine Reihe von Möglichkeiten zur Behebung von Konflikten.

Die Seriendruckreplikation wird vom SQL Server Snapshot Agent und merge Agent implementiert. Wenn die Publikation ungefiltert ist oder statische Filter verwendet, erstellt der Snapshot-Agent eine einzelne Momentaufnahme. Wenn die Publikation parametrisierte Filter verwendet, erstellt der Snapshot-Agent für jede Datenpartition eine Momentaufnahme. Der Zusammenführungs-Agent überträgt die initialen Daten-Snapshots an die Abonnenten. Außerdem werden inkrementelle Datenänderungen zusammengeführt, die nach dem Erstellen der ersten Momentaufnahme beim Publisher oder Abonnenten aufgetreten sind, und erkennt und löst alle Konflikte gemäß den von Ihnen konfigurierten Regeln.

Damit Änderungen nachverfolgt werden können, müssen Mergereplikationen (und Transaktionsreplikationen) mit Abonnements mit verzögertem Update jede Zeile in jeder veröffentlichten Tabelle eindeutig identifizieren können. Zur Durchführung dieser Zusammenführungsreplikation wird jeder Tabelle die Spalte rowguid hinzugefügt, es sei denn, die Tabelle verfügt bereits über eine Spalte vom Datentyp uniqueidentifier mit dem ROWGUIDCOL Eigenschaftensatz (in diesem Fall wird diese Spalte verwendet). Wenn die Tabelle aus der Publikation gelöscht wird, wird die rowguid Spalte entfernt. Wenn eine vorhandene Spalte für die Nachverfolgung verwendet wurde, wird die Spalte nicht entfernt. Ein Filter muss die von der Replikation verwendete rowguidcol nicht einschließen, um Zeilen zu identifizieren. Die newid() Funktion wird als Standard für die rowguid Spalte bereitgestellt, kunden können jedoch bei Bedarf eine GUID für jede Zeile bereitstellen. Geben Sie jedoch nicht den Wert 00000000-0000-0000-0000-000000000000 an.

Das folgende Diagramm zeigt die Komponenten, die in der Zusammenführungsreplikation verwendet werden.

Zusammenführen von Replikationskomponenten und Datenfluss: