Replikationsabonnenten und AlwaysOn-Verfügbarkeitsgruppen (SQL Server)

Wenn für eine AlwaysOn-Verfügbarkeitsgruppe mit einer Datenbank, die einen Replikationsabonnenten darstellt, ein Failover ausgeführt wird, schlägt das Replikationsabonnement u. U. fehl. Bei Transaktionsabonnenten setzt der Verteilungs-Agent die Replikation automatisch fort, wenn für das Abonnement der Name des Verfügbarkeitsgruppenlisteners des Abonnenten verwendet wird. 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, das automatische Failover von Transaktionsabonnenten und das manuelle Failover von Mergeabonnenten. Das Failover eines Verteilers zu einer Verfügbarkeitsdatenbank wird nicht unterstützt. AlwaysOn kann nicht mit Szenarien für Websynchronisierung und SsNoVersion Compact kombiniert werden.

Failover eines Mergepullabonnements

Ein Pullabonnement schlägt bei einem Verfügbarkeitsgruppenfailover fehl, da der Pull-Agent die Aufträge nicht finden kann, die in der msdb-Datenbank der Serverinstanz gespeichert sind, von der das primäre Replikat gehostet wird. Die Datenbank ist nicht verfügbar, da ein Serverinstanzfehler aufgetreten ist.

Failover eines Mergepushabonnements

Ein Pushabonnement schlägt bei einem Verfügbarkeitsgruppenfailover fehl, da der Push-Agent keine Verbindung mehr mit der ursprünglichen Abonnementdatenbank auf dem ursprünglichen Abonnenten herstellen kann.

Erstellen eines Transaktionsabonnements in einer AlwaysOn-Umgebung

Führen Sie bei der Transaktionsreplikation folgende Schritte aus, um die Verfügbarkeitsgruppe eines Abonnenten zu konfigurieren und ein Failover auszuführen:

  1. Bevor Sie das Abonnement erstellen, fügen Sie der entsprechenden AlwaysOn-Verfügbarkeitsgruppe die Abonnentendatenbank hinzu.

  2. Fügen Sie den Verfügbarkeitsgruppenlistener des Abonnenten allen Knoten der Verfügbarkeitsgruppe als Verbindungsserver hinzu. Dadurch werden alle potenziellen Failoverpartner informiert, dass der Listener vorhanden und für Verbindungen verfügbar ist.

  3. Mit dem Skript im Abschnitt Erstellen eines Pushabonnements für eine Transaktionsreplikation unten können Sie das Abonnement mit dem Namen des Verfügbarkeitsgruppenlisteners des Abonnenten erstellen. Der Listenername bleibt nach einem Failover weiterhin gültig, während der tatsächliche Servername des Abonnenten von dem Knoten abhängig ist, der zum neuen primären Replikat wird.

    HinweisHinweis

    Das Abonnement muss mithilfe eines Transact-SQL-Skripts erstellt werden und kann nicht mit Management Studio erstellt werden.

  4. Bei Erstellung eines Pullabonnements:

    1. Öffnen Sie in Management Studio auf dem primären Abonnentenknoten die Struktur des SQL Server-Agents.

    2. Suchen Sie den Agentauftrag zur Verteilung des Pullabonnements, und bearbeiten Sie den Auftrag.

    3. Überprüfen Sie im Schritt zum Ausführen des Agentauftrags den -Publisher-Parameter und den -Distributor-Parameter. Stellen Sie sicher, dass diese Parameter den richtigen direkten Server- und Instanznamen des Verleger- und Verteilerservers enthalten.

    4. Ändern Sie den -Subscriber-Parameter in den Verfügbarkeitsgruppenlistener-Namen des Abonnenten.

Wenn Sie beim Erstellen des Abonnements diese Schritte befolgen, müssen nach einem Failover keine weiteren Maßnahmen ergriffen werden.

Erstellen eines Pushabonnements für eine Transaktionsreplikation

-- commands to execute at the publisher, in the publisher database:
use [<publisher database name>]
EXEC sp_addsubscription @publication = N'<publication name>', 
       @subscriber = N'<availability group 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'<availability group listener name>', 
       @subscriber_db = N'<subscriber database name>', 
       @job_login = null, @job_password = null, @subscriber_security_mode = 1;
GO

So werden die Merge-Agents fortgesetzt, nachdem für die Verfügbarkeitsgruppe des Abonnenten ein Failover ausgeführt wurde

Bei einer Mergereplikation muss der Abonnent mithilfe folgender Schritte von einem Replikationsadministrator manuell neu konfiguriert werden:

  1. Führen Sie sp_subscription_cleanup aus, 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).

  2. Erstellen Sie das Abonnement neu, indem Sie ein neues Abonnement auf Grundlage einer neuen Momentaufnahme erstellen.

HinweisHinweis

Das aktuelle Verfahren ist für Mergereplikationsabonnenten nicht geeignet, die Mergereplikation erfolgt jedoch hauptsächlich für nicht verbundene Benutzer (Desktops, Laptops, Mobiltelefone), die keine AlwaysOn-Verfügbarkeitsgruppen auf dem Abonnenten nutzen.