Tutorial: Konfigurieren der Replikation zwischen einem Server und mobilen Clients (Mergereplikation)

Gilt für:SQL Server

Die Mergereplikation stellt eine geeignete Lösung für das Problem des Verschiebens von Daten zwischen einem zentralen Server und mobilen Clients dar, die nur gelegentlich miteinander verbunden sind. Mithilfe der Replikations-Assistenten können Sie eine Mergereplikationstopologie auf einfache Weise konfigurieren und verwalten.

In diesem Lernprogramm wird die Konfiguration einer Replikationstopologie für mobile Clients erläutert. Weitere Informationen zur Mergereplikation finden Sie unter Mergereplikation.

Lernziele

In diesem Tutorial werden mithilfe einer Mergereplikation Daten aus einer zentralen Datenbank für mindestens einen mobilen Benutzer veröffentlicht, sodass jeder Benutzer eine eindeutig gefilterte Teilmenge von Daten erhält.

In diesem Tutorial lernen Sie Folgendes:

  • Konfigurieren eines Verlegers für die Mergereplikation
  • Hinzufügen eines mobilen Abonnenten für die Mergeveröffentlichung
  • Synchronisieren des Abonnements für die Mergeveröffentlichung

Voraussetzungen

Dieses Tutorial richtet sich an Benutzer, die mit grundlegenden Datenbankvorgängen vertraut sind, aber nur über begrenzte Kenntnisse in Bezug auf die Replikation verfügen. Bevor Sie mit diesem Tutorial beginnen, müssen Sie die Schritte unter Tutorial: Prepare SQL Server for replication (Tutorial: Vorbereiten von SQL Server auf die Replikation) ausführen.

Für dieses Tutorial benötigen Sie SQL Server, SQL Server Management Studio (SSMS) und eine AdventureWorks-Datenbank:

  • Installieren Sie auf dem Verlegerserver (Quelle) Folgendes:

    • Eine beliebige Version von SQL Server (SQL Server Express und SQL Server Compact ausgeschlossen) Diese Editionen können nicht als Replikationsverleger fungieren.
    • Die AdventureWorks2022 -Beispieldatenbank Aus Sicherheitsgründen werden die Beispieldatenbanken standardmäßig nicht installiert.
  • Installieren Sie auf dem Abonnentenserver (Ziel) eine beliebige Edition von SQL Server mit Ausnahme von SQL Server Express oder SQL Server Compact. Die Veröffentlichung, die in diesem Tutorial erstellt wird, unterstützt weder SQL Server Express noch SQL Server Compact.

  • Installieren Sie SQL Server Management Studio.

  • Installieren Sie die SQL Server 2017 Developer Edition.

  • Laden Sie die AdventureWorks-Beispieldatenbank herunter. Weitere Informationen zum Wiederherstellen einer Datenbank in SSMS finden Sie unter Wiederherstellen einer Datenbank.

Hinweis

  • Die Replikation wird für SQL Server-Instanzen, zwischen denen mehr als zwei Versionen liegen, nicht unterstützt. Weitere Informationen finden Sie unter In der Replikationstopologie unterstützte SQL Server-Versionen.
  • In SQL Server Management Studio müssen Sie eine Verbindung mit dem Herausgeber und Abonnenten herstellen, indem Sie eine Anmeldung verwenden, die Mitglied der festen Serverrolle "sysadmin " ist. Weitere Informationen zu dieser Rolle finden Sie unter Rollen auf Serverebene.

Geschätzte Dauer dieses Tutorials: 60 Minuten

Konfigurieren eines Verlegers für die Mergereplikation

In diesem Abschnitt erstellen Sie eine Zusammenführungsveröffentlichung mithilfe von SQL Server Management Studio, um eine Teilmenge der Tabellen "Employee", "SalesOrderHeader" und "SalesOrderDetail " in der AdventureWorks2022 Beispieldatenbank zu veröffentlichen. Diese Tabellen werden mit parametrisierten Zeilenfiltern gefiltert, sodass in den einzelnen Abonnements jeweils eine eindeutige Teilmenge der Daten enthalten ist. Außerdem fügen Sie der Publikationszugriffsliste (PAL) die sql Server-Anmeldung hinzu, die vom Merge-Agent verwendet wird.

Erstellen einer Mergeveröffentlichung und Definieren von Artikeln

  1. Verbinden zum Herausgeber in SQL Server Management Studio, und erweitern Sie dann den Serverknoten.

  2. Starten Sie den SQL Server-Agent, indem Sie im Objekt-Explorer erst mit der rechten Maustaste auf den Agent und anschließend mit der linken auf Starten klicken. Wenn mit diesem Schritt der Agent nicht gestartet wird, müssen Sie ihn manuell über den SQL Server-Konfigurations-Manager starten.

  3. Erweitern Sie den Ordner Replikation, und klicken Sie mit der rechten Maustaste auf Lokale Veröffentlichungen. Klicken Sie anschließend auf Neue Veröffentlichung. Der Assistent für neue Veröffentlichung wird gestartet:

    Selections to start the New Publication Wizard

  4. Wählen Sie auf der Seite Veröffentlichungsdatenbank die Datenbank AdventureWorks2022 aus, und klicken Sie anschließend auf Weiter.

  5. Wählen Sie auf der Seite Veröffentlichungstyp die Option Mergeveröffentlichung aus, und klicken Sie anschließend auf Weiter.

  6. Stellen Sie auf der Seite "Abonnententypen" sicher, dass nur SQL Server 2008 (10.0.x) oder höher ausgewählt ist, und wählen Sie dann "Weiter" aus:

  7. Erweitern Sie auf der Seite Artikel den Knoten Tabellen. Wählen Sie die folgenden drei Tabellen aus: Employee, SalesOrderHeader und SalesOrderDetail. Wählen Sie Weiter aus.

    Table selections on the

    Hinweis

    Die Tabelle Employee enthält eine Spalte (OrganizationNode) vom Datentyp hierarchyid. Dieser Datentyp wird nur für die Replikation in SQL Server 2017 unterstützt.

    Wenn Sie einen früheren Build als SQL Server 2017 verwenden, wird unten auf dem Bildschirm eine Meldung angezeigt, in der Sie darüber informiert werden, dass möglicherweise Daten verloren gehen können, wenn Sie diese Spalte in einer bidirektionalen Replikation verwenden. Sie können diese Meldung für dieses Tutorial ignorieren. Trotzdem sollte dieser Datentyp nur in einer Produktionsumgebung repliziert werden, wenn Sie den unterstützten Build verwenden.

    Weitere Informationen zum Replizieren des Datentyps hierarchyid finden Sie unter Verwenden von hierarchyid-Spalten in replizierten Tabellen.

  8. Klicken Sie auf der Seite Tabellenzeilen filtern auf Hinzufügen, und klicken Sie anschließend auf Filter hinzufügen.

  9. Klicken Sie im Dialogfeld Filter hinzufügen auf Employee (HumanResources) unter Wählen Sie die zu filternde Tabelle aus. Klicken Sie erst auf die Spalte LoginID und dann auf den Pfeil nach rechts, um der WHERE-Klausel der Filterabfrage die Spalte hinzuzufügen, und ändern Sie die WHERE-Klausel wie folgt:

     WHERE [LoginID] = HOST_NAME()  
    

    Klicken Sie erst auf Eine Zeile aus dieser Tabelle wird nur an ein Abonnement gesendet und anschließend auf OK.

    Selections for adding a filter

  10. Klicken Sie erst auf der Seite Tabellenzeilen filtern auf Employee (Human Resources), dann auf Hinzufügen und anschließend auf Join hinzufügen, um den ausgewählten Filter zu erweitern.

    a. Wählen Sie im Dialogfeld Join hinzufügen unter Verknüpfte Tabelle den Eintrag Sales.SalesOrderDetail aus. Klicken Sie auf Write the join statement manually (Joinanweisung manuell schreiben), und schließen Sie den Vorgang wie folgt ab:

    ON [Employee].[BusinessEntityID] =  [SalesOrderHeader].[SalesPersonID] 
    

    b. Klicken Sie unter Geben Sie Joinoptionen an auf die Option Eindeutiger Schlüssel, und klicken Sie anschließend auf OK.

    Selections for adding a join to the filter

  11. Klicken Sie erst auf der Seite Tabellenzeilen filtern auf SalesOrderHeader, dann auf Hinzufügen und anschließend auf Join hinzufügen, um den ausgewählten Filter zu erweitern.

    a. Wählen Sie im Dialogfeld Join hinzufügen unter Verknüpfte Tabelle den Eintrag Sales.SalesOrderDetailaus.
    b. Klicken Sie auf Anweisung mit dem Generator erstellen.
    c. Überprüfen Sie im Feld Vorschau, dass die Joinanweisung wie folgt lautet:

    ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID] 
    

    d. Klicken Sie unter Geben Sie Joinoptionen an auf die Option Eindeutiger Schlüssel, und klicken Sie anschließend auf OK. Wählen Sie Weiter aus.

    Selections for adding another join, for sales orders

  12. Klicken Sie auf Momentaufnahme sofort erstellen, deaktivieren Sie Ausführung des Momentaufnahme-Agents zu folgenden Zeitpunkten planen, und klicken Sie auf Weiter:

    Selection for creating a snapshot immediately

  13. Wählen Sie auf der Seite Agentsicherheit die Option Sicherheitseinstellungen aus. Geben Sie im Feld "Prozesskonto" Publisher_Machine_Name>\repl_Momentaufnahme ein, geben Sie< das Kennwort für dieses Konto ein, und wählen Sie dann "OK" aus. Wählen Sie Weiter aus.

    Selections for setting Snapshot Agent security

  14. Geben Sie auf der Seite Assistenten abschließen im Feld Veröffentlichungsname den Namen AdvWorksSalesOrdersMerge ein, und klicken Sie auf Fertig stellen:

  15. Klicken Sie auf Schließen, nachdem die Veröffentlichung erstellt wurde. Klicken Sie unter dem Knoten Replikation im Objekt-Explorer mit der rechten Maustaste auf Lokale Veröffentlichungen, und wählen Sie Aktualisieren aus, um Ihre neue Mergereplikation anzuzeigen.

Anzeigen des Status der Momentaufnahmeerstellung

  1. Verbinden zum Herausgeber in SQL Server Management Studio, erweitern Sie den Serverknoten, und erweitern Sie dann die Replikationsordner.

  2. Klicken Sie im Ordner Lokale Veröffentlichungen erst mit der rechten Maustaste auf AdvWorksSalesOrdersMerge und anschließend mit der linken auf Status des Momentaufnahme-Agents anzeigen:

    Selections for viewing Snapshot Agent status

  3. Der aktuelle Status des Auftrags des Momentaufnahmen-Agents für die Veröffentlichung wird angezeigt. Stellen Sie sicher, dass der Momentaufnahmeauftrag erfolgreich war, bevor Sie zur nächsten Lektion wechseln.

Hinzufügen der Anmeldung des Merge-Agents zur PAL

  1. Verbinden zum Herausgeber in SQL Server Management Studio, erweitern Sie den Serverknoten, und erweitern Sie dann die Replikationsordner.

  2. Klicken Sie im Ordner Lokale Veröffentlichungen erst mit der rechten Maustaste auf AdvWorksSalesOrdersMerge und anschließend mit der linken auf Eigenschaften.

    a. Wählen Sie die Seite Veröffentlichungszugriffsliste und anschließend Hinzufügen aus.

    b. Wählen Sie <im Dialogfeld "Publikationszugriff hinzufügen" Publisher_Machine_Name>\repl_merge und dann "OK" aus. Wählen Sie erneut OK aus.

    Selections for adding the Merge Agent login

Weitere Informationen finden Sie unter:

Erstellen eines Abonnements für die Mergeveröffentlichung

In diesem Abschnitt erfahren Sie, wie Sie der zuvor erstellten Mergeveröffentlichung ein Abonnement hinzufügen. In diesem Tutorial wird der Remoteabonnent (NODE2\SQL2016) verwendet. Anschließend erstellen Sie Berechtigungen für die Abonnementdatenbank und generieren die gefilterte Datenmomentaufnahme für das neue Abonnement manuell.

Hinzufügen eines Abonnenten für die Mergeveröffentlichung

  1. Verbinden zum Abonnent in SQL Server Management Studio, und erweitern Sie den Serverknoten. Erweitern Sie den Ordner Replikation, klicken Sie erst mit der rechten Maustaste auf den Ordner Lokale Abonnements und dann mit der linken auf Neue Abonnements. Der Assistent für neue Abonnements wird gestartet:

    Selections to start the New Subscription Wizard

  2. Klicken Sie auf der Seite Veröffentlichung in der Liste Verleger auf SQL Server-Verleger suchen.

    Geben Sie im Dialogfeld Verbindung mit Server herstellen im Feld Servername den Namen der Verlegerinstanz ein, und klicken Sie auf Verbinden.

    Selections for adding a publisher

  3. Klicken Sie erst auf AdvWorksSalesOrdersMerge und dann auf Weiter.

  4. Klicken Sie auf der Seite Speicherort des Merge-Agents auf Jeden Agent auf seinem Abonnenten ausführen, und klicken Sie anschließend auf Weiter:

  5. Wählen Sie auf der Seite Abonnenten den Instanznamen des Abonnentenservers aus. Wählen Sie unter Abonnementdatenbank die Option Neue Datenbank in der Liste aus.

    Geben Sie im Dialogfeld Neue Datenbank den Namen SalesOrdersReplica in das Feld Datenbankname ein. Wählen Sie OK und anschließend Weiter aus.

    Selections for adding a database to the subscriber

  6. Klicken Sie auf der Seite Sicherheit für den Merge-Agent auf die Schaltfläche mit den Auslassungspunkten (). Geben Sie im Feld "Prozesskonto" Subscriber_Machine_Name>\repl_merge ein, und geben Sie <das Kennwort für dieses Konto an. Wählen Sie nacheinander OK, Weiter und anschließend noch einmal Weiter aus.

    Selections for Merge Agent security

  7. Legen Sie auf der Seite Synchronisierungszeitplan den Agentzeitplan auf Nur bedarfsgesteuert ausführen fest. Wählen Sie Weiter aus.

  8. Wählen Sie auf der Seite Abonnements initialisieren aus der Liste Initialisierungszeitpunkt die Option Bei der ersten Synchronisierung aus. Wählen Sie Weiter aus, um zur Seite Abonnementtyp zu wechseln, und wählen Sie den entsprechenden Abonnementtyp aus. In diesem Tutorial wird Client verwendet. Nachdem Sie den Abonnementtyp ausgewählt haben, wählen Sie erneut Weiter aus.

    Selections for initializing subscriptions at first synchronization

  9. Geben Sie auf der Seite HOST_NAME-Werte im Feld HOST_NAME-Wert den Wert adventure-works\pamela0 ein. Wählen Sie dann Fertig stellen aus.

  10. Wählen Sie erneut Fertig stellen aus. Klicken Sie auf Schließen, nachdem das Abonnement erstellt wurde.

Festlegen der Serverberechtigungen auf dem Abonnenten

  1. Verbinden an den Abonnenten in SQL Server Management Studio. Erweitern Sie den Knoten Sicherheit, klicken Sie mit der rechten Maustaste auf Anmeldungen, und klicken Sie anschließend auf Neue Anmeldung.

    Wählen Sie auf der Seite "Allgemein" die Option "Suchen" aus, und geben Sie< dann Subscriber_ Machine_Name>\repl_merge in das Feld "Objektname eingeben" ein. Klicken Sie auf Namen überprüfen und dann auf OK.

    Selections for setting the login

  2. Wählen Sie auf der Seite Benutzerzuordnung die Datenbank SalesOrdersReplica und die Rolle db_owner aus. Erteilen Sie auf der Seite Sicherungsfähige Elemente die Berechtigung Explizit für Ablaufverfolgung ändern. Klickan Sie auf OK.

Erstellen der gefilterten Datenmomentaufnahme für das Abonnement

  1. Verbinden zum Herausgeber in SQL Server Management Studio, erweitern Sie den Serverknoten, und erweitern Sie dann die Replikationsordner.

  2. Klicken Sie im Ordner Lokale Veröffentlichungen erst mit der rechten Maustaste auf die AdvWorksSalesOrdersMerge-Veröffentlichung und anschließend mit der linken auf Eigenschaften.

    a. Klicken Sie erst auf die Seite Datenpartitionen und dann auf Hinzufügen.
    b. Geben Sie im Dialogfeld Datenpartition hinzufügen im Feld HOST_NAME-Wert den Wert adventure-works\pamela0 ein, und klicken Sie anschließend auf OK.
    c. Wählen Sie die neu hinzugefügte Partition aus, klicken Sie erst auf Die ausgewählten Momentaufnahmen jetzt generieren und anschließend auf OK.

    Selections for adding a partition

Weitere Informationen finden Sie unter:

Synchronisieren des Abonnements für die Mergeveröffentlichung

In diesem Abschnitt starten Sie die Merge-Agent, um das Abonnement mithilfe von SQL Server Management Studio zu initialisieren. Mithilfe dieser Prozedur können Sie außerdem eine Synchronisierung mit dem Verleger ausführen.

Starten der Synchronisierung und Initialisieren des Abonnements

  1. Verbinden an den Abonnenten in SQL Server Management Studio.

  2. Stellen Sie sicher, dass der SQL Server-Agent ausgeführt wird. Wenn das nicht der Fall ist, klicken Sie im Objekt-Explorer erst mit der rechten Maustaste auf den SQL Server-Agent und anschließend mit der linken auf Starten. Wenn mit diesem Schritt der Agent nicht gestartet wird, müssen Sie ihn manuell über den SQL Server-Konfigurations-Manager starten.

  3. Erweitern Sie den Knoten Replikation. Klicken Sie im Ordner Lokale Abonnements mit der rechten Maustaste auf das Abonnement in der Datenbank SalesOrdersReplica, und klicken Sie anschließend auf Synchronisierungsstatus anzeigen.

    Klicken Sie auf Starten, um das Abonnement zu initialisieren.

    Synchronization status with

Nächste Schritte

Nun wissen Sie, wie Sie ihren Verleger und Ihren Abonnenten erfolgreich für Ihre Mergereplikation konfigurieren können. Weitere Funktionen:

  1. Daten in der Tabelle SalesOrderHeader oder SalesOrderDetail auf dem Verleger oder Abonnenten einfügen, aktualisieren oder löschen
  2. Dieses Verfahren wiederholen, wenn Netzwerkkonnektivität zum Synchronisieren von Daten zwischen Verleger und Abonnent verfügbar ist
  3. Die Tabelle SalesOrderHeader oder SalesOrderDetail auf dem anderen Server abfragen, um die replizierten Änderungen anzuzeigen

Weitere Informationen finden Sie unter: