Freigeben über


Verwalten einer AlwaysOn-Publikationsdatenbank (SQL Server)

In diesem Thema werden besondere Überlegungen zum Verwalten einer Publikationsdatenbank erläutert, wenn Sie AlwaysOn-Verfügbarkeitsgruppen verwenden.

Verwalten einer veröffentlichten Datenbank in einer Verfügbarkeitsgruppe

Die Aufrechterhaltung einer AlwaysOn-Publikationsdatenbank ist im Wesentlichen identisch mit der Aufrechterhaltung einer Standardveröffentlichungsdatenbank mit den folgenden Überlegungen:

  • Die Verwaltung muss beim primären Replikathost erfolgen. In SQL Server Management Studiowerden Veröffentlichungen unter dem Ordner Lokale Veröffentlichungen für den primären Replikathost und auch für lesbare sekundäre Replikate angezeigt. Nach einem Failover müssen Sie unter Umständen Management Studio manuell aktualisieren, um die Änderung widerzuspiegeln, wenn das sekundäre Replikat, das zum primären Replikat höher gestuft wurde, nicht lesbar war.

  • Der Replikationsmonitor zeigt immer Veröffentlichungsinformationen unter dem ursprünglichen Verleger an. Diese Informationen können jedoch von einem beliebigen Replikat aus im Replikationsmonitor angezeigt werden, indem der ursprüngliche Verleger als Server hinzugefügt wird.

  • Bei Verwendung von gespeicherten Prozeduren oder Replikationsverwaltungsobjekten (RMO, Replication Management Objects) zum Verwalten der Replikation im primären Replikat müssen Sie in Fällen, in denen Sie den Verlegernamen angeben, den Namen der Instanz angeben, auf der die Datenbank für die Replikation aktiviert wurde. Verwenden Sie die PUBLISHINGSERVERNAME Funktion, um den entsprechenden Namen zu ermitteln. Wenn eine Veröffentlichungsdatenbank einer Verfügbarkeitsgruppe beitritt, sind die in den sekundären Datenbankreplikaten gespeicherten Replikationsmetadaten mit denen im primären Replikat identisch. Demzufolge entspricht für Veröffentlichungsdatenbanken, die in der primären Replikatdatenbank zur Replikation aktiviert wurden, der in den Systemtabellen des sekundären Replikats gespeicherte Verlegerinstanzname dem Namen der primären Replikatdatenbank und nicht dem Namen der sekundären Replikatdatenbank. Dies wirkt sich auf die Replikationskonfiguration und -wartung aus, wenn ein Failover der Veröffentlichungsdatenbank zur sekundären Replikatdatenbank erfolgt. Wenn Sie beispielsweise die Replikation mit gespeicherten Prozeduren nach einem Failover konfigurieren und ein Pull-Abonnement für eine Publikationsdatenbank einrichten möchten, die bei einem anderen Replikat aktiviert wurde, müssen Sie den Namen des ursprünglichen Publishers anstelle des aktuellen Publishers als Parameter @publisher von sp_addpullsubscription oder sp_addmergepulllsubscription angeben. Wenn Sie jedoch eine Veröffentlichungsdatenbank nach einem Failover aktivieren, entspricht der in den Systemtabellen gespeicherte Verlegerinstanzname dem Namen des aktuellen primären Hosts. In diesem Fall würden Sie den Hostnamen des aktuellen primären Replikats für den @publisher -Parameter verwenden.

    Hinweis

    Bei einigen Prozeduren wie sp_addpublicationz. B. wird der parameter @publisher nur für Herausgeber unterstützt, die keine Instanzen von SQL Server sind. In diesen Fällen ist er für SQL Server AlwaysOn nicht relevant.

  • Synchronisieren Sie die Pullabonnements vom Abonnenten und die Pushabonnements vom aktiven Verleger aus, um ein Abonnement in Management Studio nach einem Failover zu synchronisieren.

Entfernen einer veröffentlichten Datenbank aus einer Verfügbarkeitsgruppe

Berücksichtigen Sie die folgenden Probleme, wenn eine veröffentlichte Datenbank aus einer Verfügbarkeitsgruppe entfernt wird, oder wenn eine Verfügbarkeitsgruppe, die eine veröffentlichte Elementdatenbank aufweist, gelöscht wird.

  • Wenn die Publikationsdatenbank beim ursprünglichen Verlag aus einem primären Replikat einer Verfügbarkeitsgruppe entfernt wird, müssen Sie sp_redirect_publisher ausführen, ohne einen Wert für den Parameter @redirected_publisher anzugeben, um die Umleitung für das Verlags-/Datenbankpaar zu entfernen.

    EXEC sys.sp_redirect_publisher   
        @original_publisher = 'MyPublisher',  
        @published_database = 'MyPublishedDB';  
    

    Die Datenbank wird auf dem primären Replikat im Wiederherstellungsstatus belassen und muss wiederhergestellt werden. Sobald Sie dies tun, sollte die Replikation unverändert mit dem ursprünglichen Verleger funktionieren.

  • Wenn die Publikationsdatenbank vom ursprünglichen Herausgeber zu einem Replikat umschaltet und die Datenbank aus dem primären Replikat der Verfügbarkeitsgruppe entfernt wird, verwenden Sie die gespeicherte Prozedur sp_redirect_publisher, um den ursprünglichen Herausgeber explizit auf den neuen Herausgeber umzuleiten. Die Datenbank wird im Wiederherstellungsstatus belassen und muss wiederhergestellt werden. Sobald Sie dies tun, sollte die Replikation weiterhin so funktionieren wie zuvor in der Verfügbarkeitsgruppe.

    EXEC sys.sp_redirect_publisher   
        @original_publisher = 'MyPublisher',  
        @published_database = 'MyPublishedDB',  
        @redirected_publisher = 'MyNewPublisher';  
    

    Entfernen Sie den Remoteserver für den ursprünglichen Verleger selbst dann nicht aus dem Verteiler, wenn nicht mehr auf den Server zugegriffen werden kann. Die Servermetadaten für den ursprünglichen Verleger werden beim Verteiler benötigt, um Abfragen von Veröffentlichungsmetadaten beantworten zu können

  • Wenn eine vollständige Verfügbarkeitsgruppe entfernt wird, entspricht das Verhalten im Hinblick auf eine replizierte Mitgliederdatenbank dem, wenn eine publizierte Datenbank aus einer Verfügbarkeitsgruppe entfernt wird. Die Replikation kann vom letzten primären Replikat fortgesetzt werden, sobald die Datenbank wiederhergestellt und die Umleitung geändert wurde. Wenn die Datenbank auf ihrem ursprünglichen Verleger wiederhergestellt wird, sollte die Umleitung entfernt werden. Wenn die Datenbank bei einem anderen Host wiederhergestellt wird, sollte Umleitung explizit an den neuen Host umgeleitet werden.

    Hinweis

    Wenn eine Verfügbarkeitsgruppe entfernt wird, die über veröffentlichte Mitgliedsdatenbanken verfügt, oder wenn eine veröffentlichte Datenbank aus einer Verfügbarkeitsgruppe entfernt wird, werden alle Kopien der veröffentlichten Datenbanken im Wiederherstellungsstatus belassen. Nach der Wiederherstellung wird jede Datenbank als veröffentlichte Datenbank angezeigt. Nur eine Kopie sollte mit Veröffentlichungsmetadaten beibehalten werden. Um die Replikation für eine veröffentlichte Datenbankkopie zu deaktivieren, entfernen Sie zuerst alle Abonnements und Veröffentlichungen aus der Datenbank.

    Führen Sie diese Option sp_dropsubscription aus, um Publikationsabonnements zu entfernen. Stellen Sie sicher, dass sie den Parameter @ignore_distributributor auf 1 festlegen, um die Metadaten für die aktive Veröffentlichungsdatenbank im Verteiler beizubehalten.

    USE MyDBName;  
    GO  
    
    EXEC sys.sp_dropsubscription   
        @subscriber = 'MySubscriber',  
        @publication = 'MyPublication',  
        @article = 'all',  
        @ignore_distributor = 1;  
    

    Führen Sie sp_droppublication aus, um alle Publikationen zu entfernen. Auch hier dürfen Sie nicht vergessen, den Parameter @ignore_distributor auf 1 festzulegen, um die Metadaten beim Verteiler für die aktive Veröffentlichungsdatenbank beizubehalten.

    EXEC sys.sp_droppublication   
        @publication = 'MyPublication',  
        @ignore_distributor = 1;  
    

    Führen Sie sp_replicationdboption aus, um die Replikation für die Datenbank zu deaktivieren.

    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'publish',  
        @value = 'false';  
    

    An diesem Punkt kann die Kopie der veröffentlichten Datenbank beibehalten oder gelöscht werden.

Verwandte Aufgaben

Siehe auch

Voraussetzungen, Einschränkungen und Empfehlungen für AlwaysOn-Verfügbarkeitsgruppen (SQL Server)
Übersicht über AlwaysOn-Verfügbarkeitsgruppen (SQL Server)
AlwaysOn-Verfügbarkeitsgruppen: Interoperabilität (SQL Server)
SQL Server-Replikation