Freigeben über


Transaktionsreplikation

Die Transaktionsreplikation beginnt in der Regel mit einer Momentaufnahme der Publikationsdatenbankobjekte und -daten. Sobald die anfängliche Momentaufnahme erstellt wird, werden nachfolgende Datenänderungen und Schemaänderungen, die am Publisher vorgenommen werden, in der Regel an den Abonnenten übermittelt, sobald sie auftreten (in Nahezu Echtzeit). Die Datenänderungen werden auf den Abonnenten in derselben Reihenfolge und innerhalb derselben Transaktionsgrenzen angewendet, wie sie bei Publisher aufgetreten sind; daher ist innerhalb einer Publikation die Transaktionskonsistenz gewährleistet.

Die Transaktionsreplikation wird in der Regel in Server-zu-Server-Umgebungen verwendet und ist in jedem der folgenden Fälle geeignet:

  • Sie möchten, dass inkrementelle Änderungen an Abonnenten weitergegeben werden, sobald sie auftreten.
  • Die Anwendung erfordert eine geringe Latenz zwischen dem Zeitpunkt, zu dem Änderungen am Publisher vorgenommen werden, und die Änderungen kommen beim Abonnenten an.
  • Die Anwendung erfordert Zugriff auf Zwischendatenzustände. Wenn sich beispielsweise eine Zeile fünfmal ändert, ermöglicht die Transaktionsreplikation einer Anwendung, auf jede Änderung (z. B. das Auslösen eines Triggers) zu reagieren, nicht einfach die Nettodatenänderung an die Zeile.
  • Der Publisher verfügt über eine sehr hohe Anzahl von Einfüge-, Aktualisierungs- und Löschaktivitäten.
  • Publisher oder Subscriber ist eine Nicht-SQL Server-Datenbank, z. B. Oracle.

Standardmäßig sollten Abonnenten von transaktionalen Veröffentlichungen als schreibgeschützt behandelt werden, da ihre Änderungen nicht an den Herausgeber zurückübertragen werden. Die Transaktionsreplikation bietet jedoch Optionen, die Updates beim Abonnenten zulassen.

Funktionsweise der Transaktionsreplikation

Die Transaktionsreplikation wird vom SQL Server-Snapshot-Agent, dem Protokollleser-Agent und dem Verteilungs-Agent implementiert. Der Snapshot-Agent erstellt Momentaufnahmedateien, die das Schema und die Daten von veröffentlichten Tabellen und Datenbankobjekten enthalten, speichert die Dateien im Momentaufnahmeordner und protokolliert Synchronisierungsaufträge in der Verteilungsdatenbank des Verteilers.

Der Protokolllese-Agent überwacht das Transaktionsprotokoll jeder Datenbank, die für die Transaktionsreplikation konfiguriert ist, und kopiert die für die Replikation markierten Transaktionen aus dem Transaktionsprotokoll in die Verteilungsdatenbank, die als zuverlässige Speicher- und Weiterleitungswarteschlange fungiert. Der Verteilungsagent kopiert die anfänglichen Schnappschussdateien aus dem Schnappschussordner und die Transaktionen in den Verteiler-Datenbanktabellen an Abonnenten.

Inkrementelle Änderungen werden vom Publisher gemäß dem Zeitplan des Verteilungsagenten an die Abonnenten übertragen, wobei der Agent entweder kontinuierlich für minimale Latenz oder in geplanten Intervallen ausgeführt werden kann. Da Änderungen an den Daten am Publisher vorgenommen werden müssen (wenn die Transaktionsreplikation ohne sofortige Aktualisierungs- oder Warteschlangenaktualisierungsoptionen verwendet wird), werden Updatekonflikte vermieden. Letztendlich erreichen alle Abonnenten dieselben Werte wie der Publisher. Wenn Optionen für sofortige oder Warteschlangenaktualisierungen bei der Transaktionsreplikation verwendet werden, können Aktualisierungen am Abonnenten vorgenommen werden, und bei Warteschlangenaktualisierungen können Konflikte auftreten.

Die folgende Abbildung zeigt die Hauptkomponenten der Transaktionsreplikation.

Transaktionsreplikationskomponenten und Datenfluss

Anfängliches Dataset

Bevor ein neuer Transaktionsreplikationsabonnent inkrementelle Änderungen von einem Publisher erhalten kann, muss der Abonnent Tabellen mit demselben Schema und denselben Daten wie die Tabellen beim Publisher enthalten. Das anfängliche Dataset ist in der Regel eine Momentaufnahme, die vom Snapshot-Agent erstellt und vom Verteilungs-Agent verteilt und angewendet wird. Das erste Dataset kann auch über eine Sicherung oder andere Mittel bereitgestellt werden, z. B. SQL Server Integration Services.

Wenn Momentaufnahmen verteilt und auf Abonnenten angewendet werden, sind nur diejenigen Abonnenten betroffen, die auf anfängliche Momentaufnahmen warten. Andere Abonnenten dieser Publikation (die bereits initialisiert wurden) sind davon unberührt.

Gleichzeitige Momentaufnahmeverarbeitung

Bei der Momentaufnahmereplikation werden gemeinsame Sperren für alle Tabellen platziert, die im Rahmen der Replikation für die Dauer der Snapshot-Erstellung veröffentlicht sind. Dadurch kann verhindert werden, dass Aktualisierungen für die Veröffentlichungstabellen vorgenommen werden. Bei gleichzeitiger Momentaufnahmeverarbeitung, der Standard bei der Transaktionsreplikation, werden die Freigabesperren während der gesamten Momentaufnahmegenerierung nicht beibehalten, sodass Benutzer unterbrechungsfrei arbeiten können, während die Replikation erste Momentaufnahmedateien erstellt.

Momentaufnahme-Agent

Die Verfahren, mit denen der Snapshot-Agent die erste Momentaufnahme in der Transaktionsreplikation implementiert, sind die gleichen Verfahren, die in der Snapshotreplikation verwendet werden (mit Ausnahme der oben beschriebenen Beschreibung in Bezug auf die gleichzeitige Momentaufnahmeverarbeitung).

Nachdem die Momentaufnahmendateien generiert wurden, können Sie sie mithilfe von Microsoft Windows Explorer im Momentaufnahmeordner anzeigen.

Ändern von Daten und dem Protokollleser-Agent

Der Log Reader Agent wird beim Distributor ausgeführt; er läuft in der Regel kontinuierlich, kann aber auch gemäß einem von Ihnen festgelegten Zeitplan laufen. Bei der Ausführung liest der Protokolllese-Agent zuerst das Publikationstransaktionsprotokoll (dasselbe Datenbankprotokoll, das für die Transaktionsnachverfolgung und -wiederherstellung während regulärer SQL Server-Datenbankmodulvorgänge verwendet wird) und identifiziert alle INSERT-, UPDATE- und DELETE-Anweisungen oder andere Änderungen, die an den Daten in Transaktionen vorgenommen wurden, die für die Replikation markiert wurden. Als Nächstes kopiert der Agent diese Transaktionen in Batches in die Verteilerdatenbank des Distributors. Der Protokolllese-Agent verwendet die interne gespeicherte Prozedur sp_replcmds , um den nächsten Satz von Befehlen abzurufen, die für die Replikation aus dem Protokoll markiert sind. Die Verteilungsdatenbank wird dann zur Speicher-und-Weiterleitungswarteschlange, aus der Änderungen an Abonnenten gesendet werden. Nur zugesicherte Transaktionen werden an die Verteilungsdatenbank gesendet.

Nachdem der gesamte Transaktionsbatch erfolgreich in die Verteilungsdatenbank geschrieben wurde, wird er zugesichert. Nach dem Commit jeder Reihe von Befehlen an den Distributor ruft der Log Reader-Agent sp_repldone auf, um zu markieren, wo die Replikation zuletzt abgeschlossen wurde. Schließlich markiert der Agent die Zeilen im Transaktionsprotokoll, die gelöscht werden können. Zeilen, die noch auf die Replikation warten, werden nicht gelöscht.

Transaktionsbefehle werden in der Verteilungsdatenbank gespeichert, bis sie an alle Abonnenten weitergegeben werden oder bis der maximale Aufbewahrungszeitraum für Verteilungen erreicht wurde. Abonnenten erhalten Transaktionen in derselben Reihenfolge, in der sie bei Publisher angewendet wurden.

Verteilungs-Agent

Der Verteilungs-Agent wird für Pushabonnements auf dem Verteiler und für Pullabonnements auf dem Abonnenten ausgeführt. Der Agent verschiebt Transaktionen aus der Verteilungsdatenbank an den Abonnenten. Wenn ein Abonnement zur Überprüfung markiert ist, überprüft der Verteilungs-Agent auch, ob Daten bei Publisher und Abonnenten übereinstimmen.

Publikationstypen

Die Transaktionsreplikation bietet vier Publikationstypen:

Publikationstyp BESCHREIBUNG
Standard-Transaktionsveröffentlichung Geeignet für Topologien, in denen alle Daten beim Abonnenten schreibgeschützt sind (die Transaktionsreplikation erzwingt dies am Abonnenten nicht).

Standardtransaktionspublikationen werden standardmäßig erstellt, wenn Transact-SQL oder Replikationsverwaltungsobjekte (Replication Management Objects, RMO) verwendet werden. Wenn Sie den Assistenten für neue Publikation verwenden, werden sie erstellt, indem sie auf der Seite "Publikationstyp" die Transaktionspublikation auswählen.

Weitere Informationen zum Erstellen von Publikationen finden Sie unter Veröffentlichen von Daten- und Datenbankobjekten.
Transaktionsveröffentlichung mit aktualisierbaren Abonnements Die Merkmale dieses Publikationstyps sind:

– Jeder Speicherort hat identische Daten mit einem Herausgeber und einem Abonnenten.
- Es ist möglich, Zeilen als Abonnent zu aktualisieren.
– Diese Topologie eignet sich am besten für Serverumgebungen, die hohe Verfügbarkeit und Leseskalierbarkeit erfordern.

Weitere Informationen finden Sie unter Aktualisierbare Abonnements.
Peer-zu-Peer-Topologie Die Merkmale dieses Publikationstyps sind:
- Jeder Standort verfügt über identische Daten und fungiert sowohl als Publisher als auch als Abonnent.
- Dieselbe Zeile kann jeweils nur an einer Stelle geändert werden.
- Unterstützt die Konflikterkennung
– Diese Topologie eignet sich am besten für Serverumgebungen, die hohe Verfügbarkeit und Leseskalierbarkeit erfordern.

Weitere Informationen finden Sie unter Peer-to-Peer-Transaktionsreplikation.
Bidirektionale Transaktionsreplikation Die Merkmale dieses Publikationstyps sind:
Die bidirektionale Replikation ähnelt der Peer-to-Peer-Replikation, bietet jedoch keine Konfliktlösung. Darüber hinaus ist die bidirektionale Replikation auf 2 Server beschränkt.

Weitere Informationen finden Sie unter bidirektionale Transaktionsreplikation