Warten einer Always On-Veröffentlichungsdatenbank (SQL Server)Maintaining an Always On Publication Database (SQL Server)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2016)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In diesem Thema werden besondere Überlegungen zum Verwalten einer Veröffentlichungsdatenbank bei Verwendung von Always On-Verfügbarkeitsgruppen erläutert.This topic discusses special considerations for maintaining a publication database when you use Always On availability groups.

In diesem Thema:In This Topic:

Verwalten einer veröffentlichten Datenbank in einer Verfügbarkeitsgruppe Maintaining a Published Database in an Availability Group

Die Wartung einer Always On-Veröffentlichungsdatenbank entspricht im Wesentlichen der Wartung einer standardmäßigen Veröffentlichungsdatenbank, wobei jedoch die folgenden Überlegungen zu berücksichtigen sind:Maintaining an Always On publication database is basically the same as maintaining a standard publication database, with the following considerations:

  • Die Verwaltung muss beim primären Replikathost erfolgen.Administration must occur at the primary replica host. In SQL Server Management StudioSQL 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.In SQL Server Management StudioSQL Server Management Studio, publications appear under the Local Publications folder for the primary replica host and also for readable secondary replicas. Nach einem Failover müssen Sie unter Umständen Management StudioManagement Studio manuell aktualisieren, um die Änderung widerzuspiegeln, wenn das sekundäre Replikat, das zum primären Replikat höher gestuft wurde, nicht lesbar war.After failover, you might have to manually refresh Management StudioManagement Studio for the change to be reflected if the secondary that was promoted to primary was not readable.

  • Der Replikationsmonitor zeigt immer Veröffentlichungsinformationen unter dem ursprünglichen Verleger an.Replication Monitor always displays publication information under the original publisher. Diese Informationen können jedoch von einem beliebigen Replikat aus im Replikationsmonitor angezeigt werden, indem der ursprüngliche Verleger als Server hinzugefügt wird.However, this information can be viewed in Replication Monitor from any replica by adding the original publisher as a server.

  • 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.When using stored procedures or Replication Management Objects (RMO) to administer replication at the current primary, for cases in which you specify the Publisher name, you must specify the name of the instance on which the database was enabled for replication (the original publisher). Den entsprechenden Namen ermitteln Sie mithilfe der PUBLISHINGSERVERNAME -Funktion.To determine the appropriate name, use the PUBLISHINGSERVERNAME function. Wenn eine Veröffentlichungsdatenbank einer Verfügbarkeitsgruppe beitritt, sind die in den sekundären Datenbankreplikaten gespeicherten Replikationsmetadaten mit denen im primären Replikat identisch.When a publishing database joins an availability group, the replication metadata stored in the secondary database replicas is identical to that at the primary. 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.Consequently, for publication databases enabled for replication at the primary, the publisher instance name stored in system tables at the secondary is the name of the primary, not the secondary. Dies wirkt sich auf die Replikationskonfiguration und -wartung aus, wenn ein Failover der Veröffentlichungsdatenbank zur sekundären Replikatdatenbank erfolgt.This affects replication configuration and maintenance if the publication database fails over to a secondary. Wenn Sie z.B. die Replikation mit gespeicherten Prozeduren bei einem sekundären Replikat nach einem Failover konfigurieren, und Sie ein Pullabonnement für eine Veröffentlichungsdatenbank möchten, die bei einem anderen Replikat aktiviert wurde, müssen Sie den Namen des ursprünglichen Verlegers statt des aktuellen Verlegers als @publisher -Parameter von sp_addpullsubscription oder sp_addmergepulllsubscriptionangeben.For example, if you are configuring replication with stored procedures at a secondary after failover, and you want a pull subscription to a publication database that was enabled at a different replica, you must specify the name of the original publisher instead of the current publisher as the @publisher parameter of sp_addpullsubscription or sp_addmergepulllsubscription. Wenn Sie jedoch eine Veröffentlichungsdatenbank nach einem Failover aktivieren, entspricht der in den Systemtabellen gespeicherte Verlegerinstanzname dem Namen des aktuellen primären Hosts.However, if you enable a publication database after failover, the publisher instance name stored in the system tables is the name of the current primary host. In diesem Fall würden Sie den Hostnamen des aktuellen primären Replikats für den @publisher -Parameter verwenden.In this case, you would use the host name of the current primary replica for the @publisher parameter.

    Hinweis

    Bei einigen Prozeduren, z.B. sp_addpublication, wird der @publisher -Parameter nur für Verleger unterstützt, die keine Instanzen von SQL ServerSQL Serversind. In diesen Fällen ist er für SQL ServerSQL Server -Always On nicht relevant.For some procedures, such as sp_addpublication, the @publisher parameter is supported only for publishers that are not instances of SQL ServerSQL Server; in these cases, it is not relevant for SQL ServerSQL Server Always On.

  • Synchronisieren Sie die Pullabonnements vom Abonnenten und die Pushabonnements vom aktiven Verleger aus, um ein Abonnement in Management StudioManagement Studio nach einem Failover zu synchronisieren.To synchronize a subscription in Management StudioManagement Studio after a failover, synchronize pull subscriptions from the subscriber and synchronize push subscriptions from the active publisher.

Entfernen einer veröffentlichten Datenbank aus einer Verfügbarkeitsgruppe Removing a Published Database from an Availability Group

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.Consider the following issues if a published database is removed from an availability group, or if an availability group that has a published member database is dropped.

  • Wenn die Veröffentlichungsdatenbank beim ursprünglichen Verleger aus einem primären Replikat der Verfügbarkeitsgruppe entfernt wird, müssen Sie sp_redirect_publisher ausführen, ohne einen Wert für den @redirected_publisher -Parameter anzugeben, um die Umleitung für das Verleger-/Datenbankpaar zu entfernen.If the publication database at the original publisher is removed from an availability group primary replica, you must run sp_redirect_publisher without specifying a value for the @redirected_publisher parameter in order to remove the redirection for the publisher/database pair.

    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.The database will be left in the recovering state at the primary and must be restored. Sobald Sie dies tun, sollte die Replikation unverändert mit dem ursprünglichen Verleger funktionieren.Once you do this, replication should work unchanged against the original Publisher.

  • Wenn für die Veröffentlichungsdatenbank ein Failover vom ursprünglichen Verleger zu einem Replikat ausgeführt und die Datenbank aus dem primären Replikat der Verfügbarkeitsgruppe entfernt wird, führen Sie die gespeicherte Prozedur sp_redirect_publisher aus, um den ursprünglichen Verleger zum neuen Verleger umzuleiten.If the publication database fails over from the original publisher to a replica and the database is removed from the availability group primary replica, use the stored procedure sp_redirect_publisher to explicitly redirect the original publisher to the new publisher. Die Datenbank wird im Wiederherstellungsstatus belassen und muss wiederhergestellt werden.The database will be left in the recovering state and must be restored. Sobald Sie dies tun, sollte die Replikation weiterhin so funktionieren wie zuvor in der Verfügbarkeitsgruppe.Once you do this, replication should continue to work as it did under the availability group.

    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.Do not remove the remote server for the original publisher from the distributor, even if the server can no longer be accessed. Die Servermetadaten für den ursprünglichen Verleger werden beim Verteiler benötigt, um Abfragen von Veröffentlichungsmetadaten beantworten zu könnenThe server metadata for the original publisher is needed at the distributor to satisfy publication metadata queries.

  • Wenn eine vollständige Verfügbarkeitsgruppe entfernt wird, wirkt sich dies auf eine replizierte Mitgliedsdatenbank auf die gleiche Weise aus, wie das Entfernen einer veröffentlichten Datenbank aus einer Verfügbarkeitsgruppe.If a complete availability group is removed, the behavior with regard to a member replicated database is the same as when a published database is removed from an availability group. Die Replikation kann vom letzten primären Replikat fortgesetzt werden, sobald die Datenbank wiederhergestellt und die Umleitung geändert wurde.Replication can be resumed from the last primary as soon as the database has been restored and the redirection has been modified. Wenn die Datenbank auf ihrem ursprünglichen Verleger wiederhergestellt wird, sollte die Umleitung entfernt werden.If the database is restored at its original publisher, redirection should be removed. Wenn die Datenbank bei einem anderen Host wiederhergestellt wird, sollte Umleitung explizit an den neuen Host umgeleitet werden.If the database is restored at a different host, redirection should be explicitly directed to the new host.

    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.When an availability group is removed that has published member databases, or a published database is removed from an availability group, all copies of the published databases will be left in the recovering state. Nach der Wiederherstellung wird jede Datenbank als veröffentlichte Datenbank angezeigt.If restored, each will appear as a published database. Nur eine Kopie sollte mit Veröffentlichungsmetadaten beibehalten werden.Only one copy should be retained with publication metadata. Um die Replikation für eine veröffentlichte Datenbankkopie zu deaktivieren, entfernen Sie zuerst alle Abonnements und Veröffentlichungen aus der Datenbank.To disable replication for a published database copy, first remove all subscriptions and publications from the database.

    Führen Sie sp_dropsubscription aus, um die Veröffentlichungsabonnements zu entfernen.Run sp_dropsubscription to remove publication subscriptions. Vergessen Sie nicht, den Parameter @ignore_distributributor auf 1 festzulegen, um die Metadaten beim Verteiler für die aktive Veröffentlichungsdatenbank beizubehalten.Make sure to set the parameter @ignore_distributributor to 1 to preserve the metadata for the active publishing database at the distributor.

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

    Führen Sie sp_droppublication aus, um alle Veröffentlichungen zu entfernen.Run sp_droppublication to remove all publications. 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.Again, set the parameter @ignore_distributor to 1 to preserve the metadata for the active publishing database at the distributor.

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

    Führen Sie sp_replicationdboption aus, um die Replikation für die Datenbank zu deaktivieren.Run sp_replicationdboption to disable replication for the database.

    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.At this point, the copy of the published database can be retained or dropped.

Siehe auchSee Also

Voraussetzungen, Einschränkungen und Empfehlungen für Always On-Verfügbarkeitsgruppen (SQL Server) Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)
Übersicht über Always On-Verfügbarkeitsgruppen (SQL Server) Overview of Always On Availability Groups (SQL Server)
Always On-Verfügbarkeitsgruppen: Interoperabilität (SQL Server) Always On Availability Groups: Interoperability (SQL Server)
SQL Server-ReplikationSQL Server Replication