Momentaufnahmereplikation
Gilt für: SQL Server Azure SQL Managed Instance
Die Momentaufnahmereplikation verteilt Daten exakt so, wie zu einem bestimmten Zeitpunkt angezeigt werden, ohne Aktualisierungen an den Daten zu überwachen. Bei der Synchronisierung wird die gesamte Momentaufnahmen generiert und an Abonnenten gesendet.
Hinweis
Die Momentaufnahmereplikation wird üblicherweise verwendet, um den Ausgangsdatensatz und die Ausgangsdatenobjekte für Transaktions- und Mergeveröffentlichungen bereitzustellen, da der Momentaufnahmeprozess eine Kopie aller von einer Veröffentlichung angegebenen Objekte und Daten erstellt. Die Momentaufnahmereplikation kann aber auch als eigenständiger Replikationstyp verwendet werden.
Die ausschließliche Verwendung der Momentaufnahmereplikation empfiehlt sich vor allem dann, wenn eine oder mehrere der folgenden Szenarien gegeben sind:
- Es kommt nur selten zu Datenänderungen.
- Kopien von Daten, die bezüglich des Herausgebers für eine bestimmte Zeit nicht aktuell sind.
- Es werden kleine Datenmengen repliziert.
- Große Mengen von Daten werden innerhalb einer kurzen Zeit geändert.
Die Momentaufnahmereplikation ist zu bevorzugen, wenn Datenänderungen zwar umfangreich sind, jedoch selten vorkommen. Wenn z. B. eine Vertriebsorganisation eine Produktpreisliste pflegt, in der alle Preise gleichzeitig ein- oder zweimal jährlich aktualisiert werden, sollten Sie die gesamte Momentaufnahme der Daten nach der Änderung replizieren. Bei bestimmten Datentypen können u. U. auch häufigere Momentaufnahmen angemessen sein. Wenn z. B. eine relativ kleine Tabelle tagsüber auf dem Verleger aktualisiert wird und Latenzzeiten akzeptabel sind, können die Änderungen über Nacht als Momentaufnahme übermittelt werden.
Die Momentaufnahmereplikation erfordert einen weniger konstanten Prozessoroverhead für den Herausgeber als die Transaktionsreplikation, da inkrementelle Änderungen nicht verfolgt werden. Wenn das zu replizierende Dataset groß ist, sind erhebliche Ressourcen zum Generieren und Anwenden der Momentaufnahme erforderlich. Erwägen Sie die Größe des gesamten Datasets sowie die Häufigkeit der Änderungen, bevor Sie sich für oder gegen die Momentaufnahmereplikation entscheiden.
Funktionsweise der Momentaufnahmereplikation
Standardmäßig verwenden alle drei Replikationstypen eine Momentaufnahme zum Initialisieren von Abonnenten. Die Momentaufnahmedateien werden stets vom SQL Server-Momentaufnahme-Agent generiert. Welcher Agent die Dateien jedoch übermittelt, hängt vom verwendeten Replikationstyp ab. Bei der Momentaufnahme- und der Transaktionsreplikation werden die Dateien vom Verteilungs-Agent übermittelt, wohingegen die Dateien bei der Mergereplikation vom SQL Server-Merge-Agent übermittelt werden. Der Momentaufnahme-Agent wird auf dem Verteiler ausgeführt. Der Verteilungs-Agent oder der Merge-Agent werden auf dem Verteiler für Pushabonnements oder auf dem Abonnenten für Pullabonnements ausgeführt.
Momentaufnahmen können entweder sofort nach dem Erstellen des Abonnements generiert und angewendet werden oder nach einem Zeitplan, der zum Zeitpunkt der Erstellung der Veröffentlichung festgelegt wurde. Der Momentaufnahme-Agent bereitet Momentaufnahmedateien vor, die das Schema und die Daten von veröffentlichten Tabellen und Datenbankobjekten enthalten, speichert die Dateien im Momentaufnahmeordner und zeichnet Nachverfolgungsinformationen in der Verteilungsdatenbank auf dem Verteiler auf. Beim Konfigurieren eines Verteilers geben Sie einen StandardMomentaufnahmeordner an, Sie können jedoch stattdessen oder zusätzlich einen alternativen Speicherort für eine Veröffentlichung angeben.
Neben dem Standardprozess für Momentaufnahmen, der in diesem Artikel beschrieben wird, wird ein zweiteiliger Momentaufnahmeprozess für zusammenführende Veröffentlichungen mit parametrisierten Filtern verwendet.
Die folgende Abbildung zeigt die wichtigsten Komponenten der Momentaufnahmereplikation.
Momentaufnahme-Agent
Bei der Mergereplikation wird jedes Mal eine Momentaufnahme generiert, wenn der Momentaufnahme-Agent ausgeführt wird. Bei der Transaktionsreplikation hängt die Generierung der Momentaufnahme von der Einstellung der Veröffentlichungseigenschaft immediate_sync
ab. Ist die Eigenschaft auf true
festgelegt (die Standardeinstellung bei der Verwendung des Assistenten für neue Veröffentlichungen), wird bei jedem Ausführen des Momentaufnahmen-Agents eine Momentaufnahme generiert, die jederzeit auf einen Abonnenten angewendet werden kann. Ist die Eigenschaft auf false
festgelegt (die Standardeinstellung bei der Verwendung von sp_addpublication
), wird die Momentaufnahme nur dann generiert, wenn seit dem letzten Ausführen des Momentaufnahmen-Agents ein neues Abonnement hinzugefügt wurde. Abonnenten können erst synchronisiert werden, nachdem der Momentaufnahmen-Agent abgeschlossen ist.
Der Momentaufnahme-Agent führt die folgenden Schritte aus:
Herstellen einer Verbindung vom Verteiler zum Verleger und gegebenenfalls Einrichten von Sperren für veröffentlichte Tabellen:
Bei zusammenführenden Veröffentlichungen richtet der Momentaufnahmen-Agent keine Sperren ein.
Bei Transaktionsveröffentlichungen nimmt der Momentaufnahme-Agent standardmäßig nur in der Anfangsphase der Momentaufnahmeerstellung eine Sperre vor.
Bei der Momentaufnahmeveröffentlichungen werden die Sperren während der gesamten Momentaufnahmegenerierung aufrechterhalten.
Schreiben einer Kopie des Tabellenschemas für jeden Artikel in eine
.sch
-Datei. Weitere Skriptdateien werden generiert, wenn andere Datenbankobjekte veröffentlicht werden, wie z. B. Indizes, Einschränkungen, gespeicherte Prozeduren, Sichten, benutzerdefinierte Funktionen usw.Kopieren der Daten in der veröffentlichten Tabelle auf dem Verleger und Schreiben der Daten in den Momentaufnahmeordner. Die Momentaufnahme wird als ein Satz BCP-Dateien (Bulk Copy Program, Massenkopierprogramm) generiert.
Bei Momentaufnahme- und Transaktionsveröffentlichungen fügt der Momentaufnahmen-Agent den Tabellen
MSrepl_commands
undMSrepl_transactions
Zeilen in der Verteilungsdatenbank hinzu. Die Einträge in der TabelleMSrepl_commands
sind Befehle, die den Speicherort der.sch
- und.bcp
-Dateien, sonstige Momentaufnahmedateien sowie Verweise auf alle Vor- und Nach-Momentaufnahme-Skripts angeben. Die Einträge in der TabelleMSrepl_transactions
sind Befehle, die sich auf die Synchronisierung des Abonnenten beziehen.Bei zusammenführenden Veröffentlichungen führt der Momentaufnahmen-Agent weitere Schritte aus.
Aufheben der Sperren auf veröffentlichten Tabellen.
Während der Generierung der Momentaufnahme können Sie keine Schemaänderungen an den veröffentlichten Tabellen vornehmen. Nach dem Generieren der Momentaufnahmedateien können Sie sie mithilfe von Windows-Explorer im Momentaufnahmeordner anzeigen.
Verteilungs-Agent und Merge-Agent
Bei Veröffentlichungen von Momentaufnahmen wird jedes Mal, wenn der Verteilungs-Agent für die Veröffentlichung ausgeführt wird, eine neue Momentaufnahme an jeden Abonnenten übertragen, der:
- noch nicht synchronisiert wurde;
- für eine erneute Initialisierung markiert ist;
- oder neue Artikel enthält.
Bei der Momentaufnahme- und der Transaktionsreplikation führt der Verteilungs-Agent die folgenden Schritte aus:
Herstellen einer Verbindung mit dem Verteiler.
Untersuchen der Tabellen
MSrepl_commands
undMSrepl_transactions
in der Verteilungsdatenbank auf dem Verteiler. Der Agent liest den Speicherort der Momentaufnahme-Dateien aus der ersten Tabelle und die Synchronisierungsbefehle des Abonnenten aus beiden Tabellen.Anwenden des Schemas und der Befehle auf die Abonnementdatenbank.
Bei einer ungefilterten Mergereplikationsveröffentlichung führt der Merge-Agent die folgenden Schritte aus:
Herstellen einer Verbindung mit dem Verteiler.
Überprüfen der Tabelle
sysmergeschemachange
für den Herausgeber und Ermitteln, ob eine neue Momentaufnahme vorhanden ist, die auf den Abonnenten angewendet werden sollte.Wenn eine neue Momentaufnahme verfügbar ist, wendet der Merge-Agent die Momentaufnahmedateien aus dem in
sysmergeschemachange
angegebenen Speicherort auf die Abonnementdatenbank an.