Freigeben über


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.

Sie müssen in SQL Server Management Studio eine Verbindung mit dem Herausgeber und dem Abonnenten herstellen. Dazu verwenden Sie den Anmeldenamen eines Mitglieds der festen Serverrolle sysadmin. 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 Mergeveröffentlichung, indem Sie mit SQL Server Management Studio eine Teilmenge der Tabellen Employee, SalesOrderHeader und SalesOrderDetail in der Beispieldatenbank AdventureWorks2022 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 Veröffentlichungszugriffsliste (Publication Access List, PAL) die vom Merge-Agent verwendete SQL Server-Anmeldung hinzu.

Erstellen einer Mergeveröffentlichung und Definieren von Artikeln

  1. Stellen Sie mit dem Herausgeber in SQL Server Management Studio eine Verbindung her, 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:

    Optionsauswahl zum Starten des Assistenten für neue Veröffentlichung

  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 anschließend Weiter aus:

    Seiten „Veröffentlichungstyp“ und „Abonnententypen“

  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.

    Tabellenauswahl auf der Seite „Artikel“

    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.

    Optionsauswahl zum Hinzufügen eines Filters

  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.

    Optionsauswahl zum Hinzufügen eines Joins zum 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.

    Optionsauswahl zum Hinzufügen eines weiteren Joins für Verkaufsaufträge

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

    Optionsauswahl zum sofortigen Erstellen einer Momentaufnahme

  13. Wählen Sie auf der Seite Agentsicherheit die Option Sicherheitseinstellungen aus. Geben Sie zuerst <Publisher_Machine_Name>\repl_snapshot in das Feld Prozesskonto und anschließend das Kennwort für dieses Konto ein. Wählen Sie anschließend OK aus. Wählen Sie Weiter aus.

    Optionsauswahl zum Festlegen der Sicherheit für den Momentaufnahme-Agent

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

    Seite „Assistenten abschließen“ mit dem Veröffentlichungsnamen

  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. Stellen Sie in SQL Server Management Studio eine Verbindung mit dem Herausgeber her, und erweitern Sie dann den Serverknoten und den Ordner Replikation.

  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:

    Optionsauswahl zum Anzeigen des Status des Momentaufnahme-Agents

  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. Stellen Sie in SQL Server Management Studio eine Verbindung mit dem Herausgeber her, und erweitern Sie dann den Serverknoten und den Ordner Replikation.

  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 Veröffentlichungszugriff hinzufügen den Eintrag <Publisher_Machine_Name>\repl_merge und anschließend OK aus. Wählen Sie erneut OK aus.

    Optionsauswahl zum Hinzufügen der Anmeldung des Merge-Agents

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. Stellen Sie mit dem Abonnenten in SQL Server Management Studio eine Verbindung her, 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:

    Optionsauswahl zum Starten des Assistenten für neue Abonnements

  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.

    Optionsauswahl zum Hinzufügen eines Verlegers

  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:

    Option „Jeden Agent auf seinem Abonnenten ausführen“

  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.

    Optionsauswahl zum Hinzufügen einer Datenbank zum Abonnenten

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

    Optionsauswahl für die Sicherheit für den Merge-Agent

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

    Auswahl

  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.

    Optionsauswahl zum Initialisieren von Abonnements bei der ersten Synchronisierung

  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.

    Seite „HOST_NAME-Werte“

  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. Stellen Sie in SQL Server Management Studio eine Verbindung mit dem Abonnenten her. 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 im Feld Objektnamen eingeben den Namen <Subscriber_Machine_Name>\repl_merge ein. Klicken Sie auf Namen überprüfen und dann auf OK.

    Optionsauswahl zum Festlegen der Anmeldung

  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. Wählen Sie OK aus.

    Seiten „Benutzerzuordnung“ und „Sicherungsfähige Elemente“

Erstellen der gefilterten Datenmomentaufnahme für das Abonnement

  1. Stellen Sie in SQL Server Management Studio eine Verbindung mit dem Herausgeber her, und erweitern Sie dann den Serverknoten und den Ordner Replikation.

  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.

    Optionsauswahl zum Hinzufügen einer Partition

Weitere Informationen finden Sie unter:

Synchronisieren des Abonnements für die Mergeveröffentlichung

In diesem Abschnitt starten Sie den 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. Stellen Sie in SQL Server Management Studio eine Verbindung mit dem Abonnenten her.

  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.

    Synchronisierungsstatus mit Schaltfläche „Starten“