Die SQL Server-Replikation ist eine der Datensynchronisierungsfunktionen, die verwendet wird, um die SQL Server-Datenbankobjekte und -daten zwischen den Datenbanken zu kopieren und zu verteilen, die sich in derselben SQL Server-Instanz oder in verschiedenen Instanzen befinden, und sie zwischen diesen Datenbanken zu synchronisieren, um sie konsistent zu halten Zustand.
SQL Server-Replikationskomponenten
Die SQL Server-Replikation besteht aus den folgenden Hauptkomponenten:
- Artikel :Die Datenbanktabelle, gespeicherte Prozeduren oder Ansichten, die als Grundeinheit der SQL Server-Replikation betrachtet werden.
- Händler :Die SQL Server-Instanz, die die Distribution enthält Datenbank, die die Metadaten und den Verlauf der Replikation speichert. Beachten Sie, dass der Publisher nur einem Distributor zugewiesen werden kann, der Distributor jedoch mehrere Publisher bedienen kann.
- Herausgeber :Die SQL Server-Instanz, die die Quelldatenbank enthält und die Daten für die Verteilung an die anderen Standorte verfügbar macht.
- Abonnent :Die SQL Server-Instanz, die die SQL Replication-Daten von den Herausgebern empfängt und auf die Zieldatenbank anwendet und die Datenänderungen bei einigen Replikationstypen an den Herausgeber zurückgibt.
- Replikations-Snapshot-Agent :Dieser Agent ist für die anfängliche Synchronisierung bei allen Replikationstypen verantwortlich, die dem Abonnenten eine vollständige Kopie der Publisher-Datenbankartikel bereitstellt.
- Protokolllese-Agent :Dieser Agent wird verwendet, um die Transaktionen vom Herausgeber zum Abonnenten kontinuierlich in der Transaktionsreplikation zu replizieren, indem das Transaktionsprotokoll der Quelldatenbank gelesen wird.
- Vertriebsagent :Dieser Agent wird verwendet, um den anfänglichen Snapshot auf die Zieldatenbank anzuwenden und die kontinuierlichen Datenänderungen zu verfolgen und auf die Zieldatenbank anzuwenden. Dieser Agent wird nur mit Transaktions- und Snapshot-Replikationen verwendet.
- Merge-Agent :Dieser Agent ist dafür verantwortlich, die Änderungen vom Abonnenten auf den Verleger zu kopieren und dann alle Änderungen vom Verleger auf den Abonnenten zu kopieren, und zwar auf beide Arten. Dieser Agent wird nur mit der Mergereplikation verwendet.
SQL Server-Replikationstypen
SQL Server bietet uns verschiedene Replikationstypen, die für die Datenverteilung verwendet werden können, basierend auf den Datensynchronisierungsanforderungen. Alle SQL-Replikationstypen starten die anfängliche Synchronisierung zwischen dem Verleger und dem Abonnenten, indem sie eine Momentaufnahme der gesamten Daten vom Verleger auf den Abonnenten kopieren. Zu diesen SQL Server-Replikationstypen gehören:
- Transaktionsreplikation :Bei diesem Replikationstyp werden alle Änderungen, die auf der Veröffentlicherseite vorgenommen werden, direkt an die Abonnentenseite übermittelt und angewendet. Ein Beispiel für die Transaktionsreplikation ist das Datenintegrationsszenario zwischen verschiedenen Standorten.
- Snapshot-Replikation :Bei diesem Replikationstyp wird ein Snapshot vom Verleger erstellt und einmal auf den Abonnenten angewendet, ohne die kontinuierlichen Änderungen nach dem Snapshot zu verteilen, bis die nächste Synchronisierung erfolgt, bei der ein neuer Snapshot kopiert und erneut auf den Abonnenten angewendet wird.
- Mergereplikation :Bei diesem Replikationstyp können Änderungen sowohl auf der Veröffentlicher- als auch auf der Abonnentenseite durchgeführt und synchronisiert werden und synchronisiert werden, wenn der Abonnent mit dem Netzwerk verbunden ist. Ein Beispiel für die Verwendung der Mergereplikation ist der Datenaustausch zwischen Benutzern von Point-of-Sale-Anwendungen.
- Peer-to-Peer-Replikation :Eine spezielle Art der Transaktionsreplikation, bei der der Herausgeber die Datenänderungen gleichzeitig an mehrere Abonnenten verteilt.
- Bidirektionale Replikation :Eine weitere spezielle Art der Transaktionsreplikation, bei der beide Server als Herausgeber und Abonnent fungieren und Daten untereinander austauschen.
SQL Server-Replikationsanforderungen
Bevor wir die SQL-Replikationssite einrichten und konfigurieren, müssen wir sicherstellen, dass die folgenden Punkte überprüft werden:
- Die SQL Server-Replikationskomponente wird auf allen teilnehmenden Servern, dem Verleger, dem Abonnenten und dem Verteiler installiert. Dies sollte während der Installation der SQL Server-Instanz installiert oder später mithilfe des SQL Server-Installationsassistenten wie folgt zur vorhandenen SQL-Instanz hinzugefügt werden:
- Auf den Servern ist genügend Speicherplatz für die Snapshot-Erstellung, die veröffentlichten Datenbankdaten im Abonnenten und das Transaktionsprotokollwachstum der Publisher-Datenbank vorhanden.
- Der SQL Server-Agent ist betriebsbereit, damit die SQL Server-Replikationsagenten die zugehörigen SQL-Agent-Jobs erstellen können und die Jobs ohne Probleme ausgeführt werden.
- Zwischen den teilnehmenden SQL Server-Instanzen ist ausreichend Netzwerkbandbreite vorhanden.
- Die Herausgeber-, Verteiler- und Abonnenteninstanzen können sich gegenseitig erreichen, und die TCP-Ports, die diese SQL-Instanzen überwachen, werden in den Firewallregeln geöffnet. Mit anderen Worten, wir können uns ohne Netzwerk- oder Konnektivitätsprobleme von den anderen Instanzen aus mit jeder SQL-Instanz verbinden.
- Die Artikel der Verlagsdatenbank, die repliziert werden, sollten eine zuvor definierte Primärschlüsseleinschränkung haben, um die Eindeutigkeit der Daten zu wahren.
- Das Konto, das verwendet wird, um die Replikationssite zu erstellen und die Replikations-Agents auszuführen, sollte mindestens ein Mitglied der festen Datenbankrolle db_owner in den Datenbanken Herausgeber, Verteiler und Abonnent sein, zusätzlich zur Lese- und Schreibberechtigung den Snapshot-Ordner.
Erste Schritte
In diesem Artikel zeigen wir, wie Sie den Transaktionsreplikationstyp verwenden, um die AdventureWorks2017-Datenbanktabellen zwischen zwei SQL Server-Instanzen zu replizieren. SQL1 -Instanz, die als Verteiler und Herausgeber fungiert, und die SQL2 Instanz, die als Abonnent fungiert.
Die SQL Server-Transaktionsreplikation wird in drei Schritten konfiguriert:
- Konfigurieren Sie den Verteiler.
- Konfigurieren Sie den Publisher.
- Konfigurieren Sie den Abonnenten
Lassen Sie uns diese Schritte im Detail besprechen.
Verteiler konfigurieren
Um den Verteiler zu konfigurieren, verbinden Sie sich mit der Datei „SQL1 ” SQL Server-Instanz, die als Verteiler fungieren soll, in unserem Beispiel hier dieselbe Herausgeberinstanz, durchsuchen Sie den Knoten „Replikation“ im SSMS-Objekt-Explorer, klicken Sie mit der rechten Maustaste auf Replikation -Knoten und wählen Sie Verteilung konfigurieren … Option, wie unten gezeigt:
Das erste Fenster, das im Assistenten zum Konfigurieren der Verteilung angezeigt wird, ist der Startassistent, der die Liste der Aktionen zusammenfasst, die in diesem Assistenten ausgeführt werden. Klicken Sie auf Weiter um fortzufahren:
Im nächsten Fenster werden Sie aufgefordert auszuwählen, welche SQL Server-Instanz als Verteiler fungieren soll. Es bietet Ihnen die Möglichkeit, die aktuelle SQL Server-Instanz als Verteiler auszuwählen und die Verteilungssystemdatenbank auf dieser Instanz zu erstellen oder eine andere SQL Server-Instanz anzugeben, die als Verteiler verwendet werden soll. In diesem Szenario verwenden wir die aktuelle SQL1-Instanz als Verteiler. Wählen Sie die Option, die Ihrem Designplan entspricht, und klicken Sie dann auf Weiter um fortzufahren:
Da der SQL Server-Agent-Dienst eine wichtige Rolle im SQL Server-Replikationsprozess spielt, bei dem ein SQL Server-Agent-Auftrag für jeden Replikations-Agent erstellt wird, wird empfohlen, den Startmodus zu ändern, wenn der SQL Server-Agent-Dienst von Manuell (standardmäßig ) automatisch sein. Damit es beim Neustart des SQL-Servers automatisch ausgeführt wird, ohne Gefahr zu laufen, dass man es vergisst, es manuell zu starten. Dieser Assistent bietet Ihnen die Möglichkeit, den Startmodus des SQL Server-Agent-Dienstes automatisch zu ändern, wobei zu berücksichtigen ist, dass das SQL Server-Dienstkonto über Administratorrechte auf diesem Server verfügt, um diese Aktion auszuführen. In unserem Fall führen wir diese Änderung manuell durch. Klicken Sie auf Weiter um fortzufahren:
Danach fordert Sie der Assistent auf, den Ordner anzugeben, in dem der erste Synchronisations-Snapshot erstellt wird. Geben Sie einen Ordner auf dem Laufwerk an, der über genügend Speicherplatz verfügt, und klicken Sie dann auf Weiter um fortzufahren:
Im nächsten Fenster werden Sie aufgefordert, den Namen der Verteilungsdatenbank und den Ort anzugeben, an dem die Daten und Protokolldateien für diese Datenbank gespeichert werden sollen. Geben Sie Ihren benutzerdefinierten Namen und Standort an oder behalten Sie die Standardeinstellungen bei und klicken Sie dann auf Weiter um fortzufahren:
Danach müssen Sie die Liste der SQL Server-Instanzen auswählen, die als Herausgeber fungieren und ihre Metadaten in dieser Verteilungsdatenbank speichern. Wenn Sie eine vordefinierte Topologie haben, fügen Sie alle Kandidaten-Publisher hinzu und klicken Sie dann auf Weiter um fortzufahren:
Wählen Sie im nächsten Fenster die Aktionen aus, die von diesem Assistenten ausgeführt werden, ob Sie die Verteilung direkt konfigurieren, eine Skriptdatei für die erwähnten Konfigurationsschritte generieren oder beides. In unserem Szenario konfigurieren wir die Verteilung direkt. Klicken Sie auf Weiter um fortzufahren:
Überprüfen Sie im Fenster „Assistent abschließen“ alle zuvor vorgenommenen Auswahlen und stellen Sie sicher, dass an diesen Auswahlen keine Änderungen vorgenommen werden sollen, und klicken Sie dann auf Fertig stellen um den Konfigurationsprozess zu starten:
Wenn der Verteilungskonfigurationsprozess erfolgreich abgeschlossen wurde, benachrichtigt Sie der Assistent mit einem grünen Häkchen neben jeder Aktion. Wenn ein Problem auftritt, wird eine aussagekräftige Fehlermeldung angezeigt, um es zu beheben und die Konfiguration erneut zu wiederholen. Da wir alle Aktionen erfolgreich abgeschlossen haben, Schließen der Konfigurationsassistent:
Wenn Sie den Knoten Systemdatenbanken erweitern, sehen Sie im SSMS-Objekt-Explorer, dass eine neue Verteilungssystemdatenbank erstellt wird, die zum Speichern der SQL Server-Replikationsmetadaten verwendet wird, wie unten gezeigt:
Konfigurieren Sie den Publisher
Nach der Konfiguration des Verteilers besteht der nächste Schritt darin, den Herausgeber zu konfigurieren, der als Datenquelle für die anderen Sites dient.
Stellen Sie zum Konfigurieren des Verlegers eine Verbindung mit der SQL Server-Instanz her, die die zu veröffentlichende Datenbank enthält, durchsuchen Sie den Knoten SQL Server-Replikation im Objekt-Explorer, klicken Sie dann mit der rechten Maustaste auf den Knoten Lokale Veröffentlichungen und wählen Sie Neue Veröffentlichung … Option, wie unten:
Das erste Fenster im Assistenten für neue Veröffentlichungen ist die Startseite, die die Liste der Aktionen anzeigt, die unter diesem Assistenten ausgeführt werden. Nachdem Sie gelesen haben, wie dieser Assistent Ihnen helfen wird, klicken Sie auf Weiter um fortzufahren:
Auf der nächsten Seite werden Sie aufgefordert, die Datenbank auszuwählen, die für die Abonnenten veröffentlicht wird. Dies ist die AdventureWorks2017-Datenbank in unserer Demo hier. Klicken Sie auf Weiter um fortzufahren:
Danach werden Sie aufgefordert, die Art der Veröffentlichung auszuwählen, die Sie verwenden möchten. Wir haben weiter oben in diesem Artikel die Liste der SQL Server-Replikationstypen besprochen, die in SQL Server bereitgestellt werden. In dieser Demo verwenden wir die Transaktionsveröffentlichung Typ. Klicken Sie auf Weiter um fortzufahren:
Auf der Seite Artikel können Sie die Liste der Datenbankobjekte auswählen, die Sie auf die Abonnenten replizieren möchten. Sie haben die Wahl, alle verfügbaren Objekte unter jedem Typ auszuwählen oder den Objekttyp zu erweitern und die Liste der zu replizierenden Objekte auszuwählen. In dieser Demo werden wir alle Datenbanktabellen auf die Abonnenten replizieren. Nachdem Sie die Auswahl des Objekts überprüft haben, klicken Sie auf Weiter um fortzufahren:
Mit SQL Server können Sie auch Filter für die ausgewählten Datenbankobjekte hinzufügen und nur die Daten replizieren, die den hinzugefügten Filterkriterien entsprechen. Wenn Sie vorhaben, die gesamten Tabellenzeilen zu replizieren, überspringen Sie diese Seite, indem Sie auf Weiter klicken Schaltfläche:
Geben Sie auf der Seite „Snapshot-Agent“ an, ob Sie beabsichtigen, den anfänglichen Synchronisierungs-Snapshot sofort zu erstellen, ihn für eine spätere Ausführung zu planen oder ihn manuell auszuführen, wenn Sie die Replikationseinrichtung abgeschlossen haben. In dieser Demo erstelle ich einen Snapshot, nachdem ich die Einrichtung der SQL Server-Replikation abgeschlossen habe. Klicken Sie auf Weiter um fortzufahren:
Danach werden Sie aufgefordert, das Konto zu konfigurieren, das zum Ausführen des Snapshot-Agenten und der Protokolllese-Agenten verwendet wird. Dieser Benutzer sollte mindestens über die Berechtigung db_owner für die Herausgeber-, Verteiler- und Abonnentendatenbank sowie über Lese- und Schreibberechtigungen für den Snapshot-Ordner verfügen. Sie können auch das SQL Agent-Dienstkonto verwenden, um diese SQL Server-Replikationsagenten auszuführen, was aus Sicherheitsgründen nicht empfohlen wird. Geben Sie das autorisierte Konto an und klicken Sie auf Weiter um fortzufahren:
Wählen Sie auf der Seite Assistentenaktionen die Aktionen aus, die nach Abschluss dieses Assistenten ausgeführt werden, einschließlich der Veröffentlichungserstellung und Generierung einer Skriptdatei, um die Veröffentlichung später zu erstellen, oder verwenden Sie dieses Skript als Vorlage für andere Server. In dieser Demo entscheiden wir uns für Publikation erstellen , und klicken Sie dann auf Weiter um fortzufahren:
Die letzte Seite ist der Assistent zum Abschließen, auf dem Sie den Namen der Veröffentlichung angeben und Ihre Auswahl in diesem Assistenten überprüfen müssen. Klicken Sie dann auf Fertig stellen um mit der Erstellung der Veröffentlichung fortzufahren:
Sobald der Assistent zum Erstellen von Veröffentlichungen abgeschlossen ist, zeigt er das Ergebnis des Veröffentlichungserstellungsprozesses und ob der Prozess erfolgreich mit grünen Häkchen abgeschlossen wurde oder bei einem bestimmten Schritt mit einer aussagekräftigen Fehlermeldung fehlgeschlagen ist. In dieser Demo wird die Veröffentlichung ohne Probleme erfolgreich erstellt, wie unten gezeigt:
Um zu überprüfen, ob die Veröffentlichung erfolgreich erstellt wurde, erweitern Sie den Knoten Lokale Veröffentlichungen unter dem Knoten SQL Server-Replikation des SSMS-Objekt-Explorers und überprüfen Sie die neu erstellte Veröffentlichung. Sie können die Veröffentlichungseinstellungen auch auf dieser Seite mit den Veröffentlichungseigenschaften überprüfen und ändern. Die Veröffentlichung sieht folgendermaßen aus:
Konfigurieren Sie den Abonnenten
Nachdem wir den Publisher und den Distributor vorerst erfolgreich konfiguriert haben, ist es an der Zeit, den Subscriber zu konfigurieren, der als Datenziel fungiert und die Daten vom Subscriber erhält.
Erweitern Sie zum Konfigurieren des Abonnenten von derselben Herausgeberinstanz aus den Knoten SQL Server-Replikation unter dem SSMS-Objekt-Explorer, klicken Sie mit der rechten Maustaste auf den Knoten Lokale Abonnements und wählen Sie Neue Abonnements aus … Option, wie unten gezeigt:
Das erste Fenster, das im Assistenten für neue Abonnements angezeigt wird, ist die Startseite, die zeigt, wie dieser Assistent Sie bei der Konfiguration des Abonnenten unterstützt. Klicken Sie auf Weiter um fortzufahren:
Der erste Schritt beim Konfigurieren des Abonnenten ist das Auswählen des Verlegers, für den der Abonnent erstellt wird, und der Veröffentlichungsdatenbank, die als Datenquelle für diesen Abonnenten fungiert. Wählen Sie die Veröffentlichungsdatenbank aus den aufgelisteten Datenbanken aus und klicken Sie dann auf Weiter um fortzufahren:
Danach werden Sie aufgefordert anzugeben, ob Sie alle Agenten auf der Verteilerseite ausführen und die Änderungen an den Abonnenten pushen möchten, wodurch eine zentralisierte Verwaltung für den Replikationssynchronisierungsprozess bereitgestellt wird, oder ob Sie jeden Agenten auf seinem eigenen Abonnenten ausführen möchten, der die Änderungen vom Verleger abruft , wodurch der Verarbeitungsaufwand auf der Verteilerseite reduziert wird und die separate Verwaltung jeder Abonnentensynchronisierung ermöglicht wird. In dieser Demo wählen wir Push-Abonnement und klicken auf Weiter um fortzufahren:
Im nächsten Fenster müssen Sie die SQL Server-Instanz des Abonnenten und die Zieldatenbank des Abonnements hinzufügen, mit der Möglichkeit, diese Datenbank zu erstellen, falls sie nicht vorhanden ist, wie unten gezeigt:
Geben Sie auf der Seite Sicherheit des Verteilungs-Agents das Konto an, unter dem der Verteilungs-Agent ausgeführt wird, um den Synchronisierungsprozess auszuführen, sowie das Konto, das zum Herstellen einer Verbindung mit den SQL Server-Instanzen des Verteilers und des Abonnenten verwendet wird. Es wird empfohlen, ein autorisiertes Domänenkonto bereitzustellen, das sowohl für den Verteiler als auch für den Abonnenten berechtigt ist, das SQL Agent-Dienstkonto zum Herstellen einer Verbindung mit dem Verteiler und dem Abonnenten zu verwenden, was aus Sicherheitsgründen nicht empfohlen wird. Nachdem Sie das autorisierte Sicherheitskonto angegeben haben, klicken Sie auf Weiter um fortzufahren:
Geben Sie auf der nächsten Seite des Assistenten für neue Abonnements den Synchronisierungszeitplan für jeden Agenten an. Behalten Sie die Standardeinstellung bei, wenn Sie möchten, dass die Synchronisierung kontinuierlich ausgeführt wird, und klicken Sie dann auf Weiter um fortzufahren:
Danach können Sie angeben, ob die Abonnements mit einem Snapshot aus der Veröffentlichung initialisiert werden sollen und wann dieser Initialisierungsprozess durchgeführt werden soll. In dieser Demo entscheiden wir uns, das Abonnement bei der ersten Synchronisierung zu initialisieren, wie unten gezeigt:
Im Fenster Assistentenaktionen können Sie auswählen, welche Aktionen am Ende dieses Assistenten ausgeführt werden sollen. Dieser Assistent bietet Ihnen beispielsweise die Option, die konfigurierten Abonnements zu erstellen und eine Skriptdatei zu generieren, um die Abonnements später oder in einer anderen SQL Server-Instanz wie folgt zu erstellen:
Danach liefert Ihnen der Assistent eine Zusammenfassung aller Konfigurationen, die Sie in diesem Assistenten ausgewählt haben, um sie zu überprüfen, bevor Sie mit der Abonnementkonfiguration beginnen. Wenn alle Auswahlen in Ordnung sind, klicken Sie auf Fertig stellen um den Konfigurationsprozess zu starten:
Wenn der Abonnementerstellungsvorgang erfolgreich abgeschlossen wurde, benachrichtigt uns der Assistent mit einem grünen Häkchen für jede abgeschlossene Aktion oder liefert uns im Falle eines Fehlers eine aussagekräftige Fehlermeldung, wie unten gezeigt:
Um zu überprüfen, ob das Abonnement erfolgreich erstellt wurde, erweitern Sie unter dem Knoten „Replikation“ des SSMS-Objekt-Explorers die zuvor erstellte Veröffentlichung und Sie sehen alle Abonnements, die mit diesem Herausgeber verbunden sind, und erhalten Daten von ihm, wie unten gezeigt:
Anfangssynchronisations-Snapshot erstellen
Wenn Sie sich während der Publisher-Erstellung nicht dafür entschieden haben, einen anfänglichen Synchronisierungs-Snapshot zu erstellen, können Sie den Snapshot dennoch nach dem Konfigurieren der Replikationskomponenten erstellen.
Um einen anfänglichen Synchronisierungs-Snapshot zu erstellen, klicken Sie mit der rechten Maustaste auf die erstellte Veröffentlichung und wählen Sie Snapshot-Agent-Status anzeigen Möglichkeit. Klicken Sie im geöffneten Fenster auf die Schaltfläche Start, um den Snapshot-Agenten auszuführen und den anfänglichen Synchronisations-Snapshot zu erstellen. Sie können auch den Fortschritt des Snapshot-Erstellungsprozesses überwachen, bis der Snapshot aller Artikel erfolgreich erstellt wurde, wie unten:
Überwachen Sie die Synchronisierung
Sobald der Snapshot der replizierten Artikel erstellt ist, startet der Synchronisierungsprozess mit dem Abonnenten automatisch, indem alle Artikel aus diesem Snapshot auf den Abonnenten geschrieben werden. Um den Synchronisierungsprozess zu überwachen, klicken Sie mit der rechten Maustaste auf das Abonnement unter der Replikation von SQL Server -Knoten des SSMS-Objekt-Explorers und wählen Sie Synchronisierungsstatus anzeigen Option, wo sie Ihnen die Anzahl der Transaktionen und Befehle anzeigt, die auf dem Abonnenten ausgeführt wurden, wie unten gezeigt:
Darüber hinaus können Sie den Status aller Replikationsagenten und die Anzahl der Befehle überwachen, die auf der Verteilerseite anstehen und nicht auf die Abonnentenseite angewendet werden, indem Sie mit der rechten Maustaste auf den Veröffentlichungsnamen klicken und das Fenster "Replikationsmonitor starten" auswählen, wie unten gezeigt:
Um zu überprüfen, ob der Replikationsstandort einwandfrei funktioniert, lassen Sie uns einen neuen Datensatz zu einem der replizierten Artikel, der Tabelle „Employee“, auf der Herausgeberseite hinzufügen, die auf der Abonnentenseite nicht verfügbar ist, dann sehen Sie dies im Replikationsmonitor Fenster, dass ein neuer Datensatz vom Herausgeber an den Verteiler und dann an den Abonnenten geliefert wird. Danach sehen Sie, dass der neue Datensatz in der Mitarbeitertabelle auf der Abonnentenseite verfügbar ist, wie unten deutlich gezeigt:
Mit klaren und einfachen Schritten haben wir eine vollständige Website für die Transaktionsreplikation erstellt, die synchronisiert ist und gut funktioniert. Im nächsten Artikel erfahren Sie, wie Sie Probleme mit einer vorhandenen SQL Server-Replikationssite beheben. Bleiben Sie dran.