Für mein aktuelles Projekt musste ich mich in die Merge-Replication Funktionalität des SQL Servers einarbeiten. Da das Thema für mich auch neu ist, und sicherlich da draußen der ein oder andere genau an dem selben Punkt wie ich gerade ist, will ich meine gesammelten Erkenntnisse hier in diesem Blogbeitrag festhalten. Im weltweiten Netz gibt es nicht allzu viele gute Tutorials, wie man eine Replikation auf die Beine stellen kann. Deutsche Tutorials schon gar nicht. Daher hier der Versuch alles verständlich auf Deutsch zu beschreiben.
Zunächst mal zu den Eckdaten:
Mein Projekt sieht vor, eine Merge-Replication zwischen einem Standort in China und hier in Deutschland für eine Applikation aufzubauen.
Im ersten Schritt werde ich aber zunächst einmal nur auf der „grünen Wiese“ die Replication ausprobieren und versuchen die ersten Schlüsse zu ziehen und Machbarkeitsanalysen zu erstellen.
Bevor wir beginnen werde ich im Folgenden, die neuen Begriffe, denen man beim Einrichten der Replication immer wieder begegnet, erklären.
Begriff | Erklärung |
Distributor | Verwalter und Überwacher der Mergereplication |
Publisher | Der Publisher stellt die Daten in Form eines Abonnements bereit |
Subscriber | Der Subscriber konsumiert die bereitgetellten Abonnements von einem Publisher |
Abonnement | Ist die Sammlung von Inhalten (Article), die zur Verfügung gestellt werden. |
Article | Ist ein Objekt einer Datenbank was zur Replizierung ausgewählt wurde |
Bevor mit der eigentlichen Einrichtung der Merge-Replication begonnen werden kann, müssen diverse Vorbereitungen im Vorfeld erledigt werden.
In unserem Fall gehen wir davon aus, dass Distributor und Subscriber auf dem gleichen Server laufen. Das „Best-Practice“ Vorgehen sieht 4 neue lokale User für den Publisher und 2 lokale für den Subscriber vor, die für das Einrichten einer funktionierden Replication benötigt werden.
Agent | Server | Lokaler Benutzer |
Snapshot Agent | Publisher | <machine_name>\repl_snapshot |
Log Reader Agent | Publisher | <machine_name>\repl_logreader |
Distribution Agent | Publisher und Subscriber | <machine_name>\repl_distribution |
Merge Agent | Publisher und Subscriber | <machine_name>\repl_merge |
Nun kommen wir zu dem Anlegen der lokalen Benutzer.
Einrichten der Benutzer auf dem Publisher.
Server Manager öffnen
Navigieren zu Tools->Computer Management
System-Tools->Local Users and Groups
Hier muss nun aufgepasst werden. Durchaus ist es möglich, dass für das Verwenden von Passwörter von der IT Abteilung eine Gruppenrichtlinie greift.
Diesen Vorgang müssen wir dann noch für die anderen 3 User für den Publisher wiederholen.
Für den Subscriber müssen ebenfalls 2 lokale Benutzer nach o.g. Schema angelegt werden.
Microsoft empfiehlt hier, den Installationsordner des Data Verzeichnisses zu nutzen, um einen neuen Unterordner „repldata“ zu erzeugen. Nach meiner Meinung ist das aber nicht notwendig. Der Ordner kann an einem beliebigen Ort auf dem Server angelegt werden. Die zuvor angelegt Benutzer „repl_snapshot“,“repl_merge“ und „repl_distribution“ müssen nun für diesen neuen Ordner berechtigt werden. Zuvor muss der Ordner freigegeben werden:
Eigenschaften des Ordners öffnen und den Reiter „Freigabe“ aktivieren.
-> danach 2 mal bestätigen.
Dann Reiter „Sicherheit“ aktivieren und die zuvor angelegten User berechtigen.
repl_snapshot User muss Vollzugriff auf diesen Ordner bekommen.
Nun sind die Vorbereitung erledigt und wir können uns an das Einrichten im Management-Studio machen.
In unserem Fall sind Publisher und Distributor auf dem selben Server. Wir fangen nun damit an, den Distributor zu konfigurieren.
Rechtsklick auf Replication und dann „Distributor Properties“ auswählen.
Im nächsten Fenster den ersten Punkt ausgewählt lassen.
An dieser Stelle muß man die Freigabe eintragen, die wir weiter oben im Punkt „Snapshot-Freigabe“ eingerichtet hatten.
Bestätigen mit „Next“ und dann „Finish“ klicken. (Alle weiteren Fenster belassen wir auf den Standardwerten)
Der Distributor ist nun fertig eingrichtet.
Jetzt geht es an die Konfiguration des Publishers.
Auf dem SQL Server auf dem der Publisher eingerichtet werden soll navigiert man nun zu „Replication“->Rechtsklick „New Publication“
In dem sich nun öffnenden Wizard müssen wir zunächst einmal die Datenbank auswählen, welche Voll oder Teilweise repliziert werden soll. In unserem Fall ist es die AdventureWorks2014 Datenbank.
Auf der nächsten Seite des Wizard wählen wir „Merge Publication“
In diesem Tutorial nehmen wir 3 Tabellen, die wir replizieren wollen.
An dieser Stelle kann man nun auch noch Filterkriterien auf die Daten setzen, die in die Replizierung mit einbezogen werden sollen. Für diese Demo wollen wir keine Filterung vornehmen und gehen mit „Next“ weiter zur nächsten Seite.
Hier wählen wir nur „Create a snapshot immediately“.
Auf der „Agent Security“ Seite müssen folgende Einstellungen vorgenommen werden.
–> Als Process Account wählen wir hier den neu Erstellen User „repl_snapshot“.
Abschließend müssen wir einen Namen für die Publication wählen. Wir nennen die Publication „AdvWorksSalesOrdersMerge„.
Jetzt ist die Einrichtung des Publishers fast abgeschlossen. Es fehlt nur noch das initiale Erstellen des Snapshots.
Der Snapshot wird nun erstellt.
Als letztes müssen wir noch einen Subscriber einrichten.
Öffnen des Management-Studios
-Replication –> Local Subscriptions –> Rechts Klick –> New Subscription
-Publisher – Server auswählen
Auf der nächsten Seite wird gefragt, ob die Agents auf dem Subscriber selbst, oder auf dem Distributor laufen sollen.
Wir wählen hier die 2.Option „Run each agent at ist Subscriber (pull subscriptions)
Anschließend „Next“ für weiter.
Auf der folgenden Seite müssen wir festlegen, in welches Ziel repliziert werden soll.
1.Möglichkeit: Neue Datenbank
2.Möglichkeit: Bestehende Datenbank
In unserem Beispiel wählen wir eine neue Datenbank aus und nennen sie „AdventureWorksMergeReplicationTest“
WICHTIG!: Wenn eine neue Datenbank ausgewählt wird, dann müssen noch die Berechtigungen für den neu angelegten User repl_merge dort eingerichtet werden.
Next
In dem nächsten Dialog wird der Account abgefragt, den der Merge-Agent verwenden soll.
Hier kommt nun unser repl_merge – User zum Einsatz.
Weiter geht es mit der Auswahl, ob die Initialisierung direkt nach dem Wizard vorgenommen werden soll, oder aber erst mit dem ersten Initialisierungslauf.
Gleich ist es geschafft 🙂 . Nur noch 2 oder 3 Dialogfenster …
Im nächsten wird nun angegeben, ob Client oder Server Subscription Type. Wir wählen „Client“.
Next, Next
Juhuu es ist geschafft. Wir haben unsere Subscription fertig eingerichtet.