Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Wenn für eine Always On-Verfügbarkeitsgruppe mit einer Datenbank, die einen Replikationsabonnenten darstellt, ein Failover ausgeführt wird, tritt möglicherweise ein Fehler beim Replikationsabonnement auf. Für Transaktionsreplikations-Pushabonnenten setzt der Verteilungs-Agent das Replizieren nach einem Failover automatisch fort, wenn das Abonnement mit dem Namen des Verfügbarkeitsgruppenlisteners erstellt wurde. Für Transaktionsreplikations-Pullabonnenten setzt der Verteilungs-Agent das Replizieren nach einem Failover automatisch fort, wenn das Abonnement mit dem Namen des Verfügbarkeitsgruppenlisteners erstellt wurde und wenn der ursprüngliche Abonnentenserver aktiv ist und ausgeführt wird. Ursache hierfür ist, dass die Verteilungs-Agent-Aufträge nur auf dem ursprünglichen Abonnenten (primäres Replikat der Verfügbarkeitsgruppe) erstellt werden. Bei Mergeabonnenten muss der Abonnent vom Replikationsadministrator manuell neu konfiguriert werden, indem er das Abonnement neu erstellt.
Unterstützte Vorgänge
Die SQL Server-Replikation unterstützt das automatische Failover des Verlegers und das automatische Failover transaktionale Abonnenten. Zusammenführungsabonnenten können Teil einer AG sein. Manuelle Aktionen sind jedoch erforderlich, um den neuen Abonnenten nach einem Failover zu konfigurieren. Verfügbarkeitsgruppen können nicht mit WebSync- und SQL Server Compact-Szenarios kombiniert werden.
Erstellen eines Transaktionsabonnements in einer Verfügbarkeitsgruppe
Führen Sie bei der Transaktionsreplikation folgende Schritte aus, um die Verfügbarkeitsgruppe eines Abonnenten zu konfigurieren und ein Failover auszuführen:
Bevor Sie das Abonnement erstellen, fügen Sie die Abonnentendatenbank der entsprechenden Verfügbarkeitsgruppe hinzu.
Fügen Sie den Verfügbarkeitsgruppenlistener des Abonnenten als Verbindungsserver allen Knoten der Verfügbarkeitsgruppe hinzu. Dadurch werden alle potenziellen Failoverpartner informiert, dass der Listener vorhanden und für Verbindungen verfügbar ist.
Erstellen Sie das Abonnement mit dem Namen des Verfügbarkeitsgruppenlisteners des Abonnenten mithilfe des Skripts im Abschnitt Erstellen eines Pushabonnements für eine Transaktionsreplikation. Nach einem Failover bleibt der Listenername immer gültig, während der tatsächliche Servername des Abonnenten vom tatsächlichen Knoten abhängt, der zum neuen primären Knoten wurde.
Hinweis
Sie müssen ein Transact-SQL Skript verwenden, um das Abonnement zu erstellen. Sie können Management Studio nicht verwenden.
So erstellen Sie ein Pullabonnement:
Erstellen Sie das Abonnement mit dem Namen des Verfügbarkeitsgruppenlisteners des Abonnenten mithilfe des Beispielskripts im Abschnitt Erstellen eines Pullabonnements für eine Transaktionsreplikation.
Erstellen Sie nach einem Failover den Verteilungs-Agent-Auftrag mithilfe der gespeicherten Prozedur
sp_addpullsubscription_agentauf dem neuen primären Replikat.
Wenn Sie ein Pull-Abonnement mit der Abonnementdatenbank in einer AG erstellen, sollten Sie im Falle eines Failovers den Verteiler-Agent-Auftrag für das alte primäre Replikat deaktivieren und den Auftrag für das neue primäre Replikat aktivieren.
Erstellen eines Pushabonnements für eine Transaktionsreplikation
-- commands to execute at the publisher, in the publisher database:
USE [<publisher database name>];
GO
EXEC sp_addsubscription @publication = N'<publication name>',
@subscriber = N'<AG listener name>',
@destination_db = N'<subscriber database name>',
@subscription_type = N'Push',
@sync_type = N'automatic',
@article = N'all',
@update_mode = N'read only',
@subscriber_type = 0;
GO
EXEC sp_addpushsubscription_agent @publication = N'<publication name>',
@subscriber = N'<AG listener name>',
@subscriber_db = N'<subscriber database name>',
@job_login = NULL,
@job_password = NULL,
@subscriber_security_mode = 1;
GO
Erstellen eines Pullabonnements für eine Transaktionsreplikation
-- commands to execute at the subscriber, in the subscriber database:
USE [<subscriber database name>];
GO
EXEC sp_addpullsubscription @publisher = N'<publisher name>',
@publisher_db = N'<publisher database name>',
@publication = N'<publication name>',
@subscription_type = N'pull';
GO
EXEC sp_addpullsubscription_agent @publisher = N'<publisher name>',
@subscriber = N'<AG listener name or alias>',
@distributor = N'<distributor AG listener name>', -- this parameter should only be used if the distribution database is part of an AG.
@publisher_db = N'<publisher database name>',
@publication = N'<publication name>',
@job_login = NULL,
@job_password = NULL,
@subscriber_security_mode = 1;
GO
Anforderungen an den Verfügbarkeitsgruppen-Listener
Wenn Sie sp_addpullsubscription_agent für einen Abonnenten ausführen, der Teil einer AG ist, müssen Sie den @subscriber Parameterwert als Listenernamen der AG an die gespeicherte Prozedur übergeben. Wenn Sie SQL Server 2016 (13.x) und frühere Versionen oder SQL Server 2017 (14.x) vor CU 16 ausführen, verweist die gespeicherte Prozedur nicht auf den Namen des AG-Listeners. Es erstellt das Abonnement mit dem Namen des Abonnentenservers, auf dem der Befehl ausgeführt wird. Um dieses Problem zu beheben, aktualisieren Sie den @subscriber Parameter für den Replikationsverteilungs-Agent manuell mit dem Namenwert der AG-Listener.
Wenn der Abonnent AG-Listener einen nicht standardmäßigen Port verwendet, wird die Angabe der Portnummer als Teil des AG-Listenernamens im @subscriber Parameter unter Windows nicht unterstützt. Als Problemumgehung können Sie einen Alias für den Listener und Port auf Publisher, Distributor und Abonnentenserver mit Aliases (SQL Server Configuration Manager) oder dem SQL Server Client Network Utility Tool (cliconfg) für SQL Server 2022 (16.x) und höheren Versionen erstellen und den Alias als @subscriber Parameterwert übergeben.
Fortsetzen der Merge-Agents nach einem Failover der Verfügbarkeitsgruppe des Abonnenten
Bei einer Mergereplikation muss der Abonnent mithilfe folgender Schritte von einem Replikationsadministrator manuell neu konfiguriert werden:
Führen Sie
sp_subscription_cleanupaus, um das alte Abonnement für den Abonnenten zu entfernen. Führen Sie diese Aktion für das neue primäre Replikat aus (das zuvor das sekundäre Replikat war).Erstellen Sie das Abonnement neu, indem Sie ein neues Abonnement auf Grundlage einer neuen Momentaufnahme erstellen.
Hinweis
Dieser Prozess ist für Zusammenführungsreplikationsabonnenten umständlich. Das Hauptszenario für die Zusammenführungsreplikation ist jedoch getrennte Benutzer (Desktops, Laptops, Mobilgeräte), die keine AGs auf dem Abonnenten verwenden.