Mantendo um banco de dados de publicação AlwaysOn (SQL Server)Maintaining an Always On Publication Database (SQL Server)

Este tópico aplica-se a: Simdo SQL Serversembanco de dados do SQL AzuresemAzure SQL Data Warehouse sem Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Este tópico discute considerações especiais para manter um banco de dados de publicação quando você usa grupos de disponibilidade AlwaysOn.This topic discusses special considerations for maintaining a publication database when you use Always On availability groups.

Neste tópico:In This Topic:

Mantendo um banco de dados publicado em um grupo de disponibilidadeMaintaining a Published Database in an Availability Group

Manter um banco de dados de publicação AlwaysOn é basicamente o mesmo que manter um banco de dados de publicação padrão, com as seguintes considerações:Maintaining an Always On publication database is basically the same as maintaining a standard publication database, with the following considerations:

  • A administração deve ocorrer no host de réplica primária.Administration must occur at the primary replica host. No SQL Server Management StudioSQL Server Management Studio, as publicações aparecem sob a pasta Publicações Locais para o host de réplica primária e também para réplicas secundárias legíveis.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. Depois do failover, talvez você precise atualizar manualmente o Management StudioManagement Studio para que a alteração seja refletida se a réplica secundária elevada a primária não estiver legível.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.

  • O monitor de replicação sempre exibe informações de publicação sob o publicador original.Replication Monitor always displays publication information under the original publisher. Entretanto, estas informações podem ser exibidas no Monitor de Replicação de qualquer réplica, adicionando o publicador original como um servidor.However, this information can be viewed in Replication Monitor from any replica by adding the original publisher as a server.

  • Ao usar os procedimentos armazenados ou RMO (Replication Management Objects) para gerenciar na réplica primária atual, nos casos em que você especifica o nome do Publicador, especifique o nome da instância na qual o banco de dados foi habilitado para a replicação (o publicador original).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). Para determinar o nome apropriado, use a função PUBLISHINGSERVERNAME .To determine the appropriate name, use the PUBLISHINGSERVERNAME function. Quando um banco de dados de publicação ingressa em um grupo de disponibilidade, os metadados de replicação armazenados nas réplicas de banco de dados secundárias são idênticos aos da réplica primária.When a publishing database joins an availability group, the replication metadata stored in the secondary database replicas is identical to that at the primary. Portanto, para os bancos de dados de publicação habilitados para replicação na réplica primária, o nome da instância do publicador armazenado em tabelas do sistema na réplica secundária é o nome da réplica primária, e não da secundária.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. Isso afeta a configuração e a manutenção da replicação, em caso de falha do banco de dados de publicação para uma réplica secundária.This affects replication configuration and maintenance if the publication database fails over to a secondary. Por exemplo, se você estiver configurando a replicação com procedimentos armazenados em uma réplica secundária depois do failover e desejar uma assinatura pull de um banco de dados de publicação que foi habilitado em uma réplica diferente, especifique o nome do publicador original em vez do publicador atual como o parâmetro @publisher de sp_addpullsubscription ou sp_addmergepulllsubscription.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. Entretanto, se você habilitar um banco de dados de publicação depois do failover, o nome de instância de publicador armazenado nas tabelas do sistema será o nome do host primário atual.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. Neste caso, você usaria o nome de host da réplica primária atual para o parâmetro @publisher .In this case, you would use the host name of the current primary replica for the @publisher parameter.

    Observação

    Para alguns procedimentos, como sp_addpublication, o parâmetro @publisher tem suporte apenas para os publicadores que não são instâncias do SQL ServerSQL Server; nesses casos, ele não é relevante para o AlwaysOn do SQL ServerSQL Server .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.

  • Para sincronizar uma assinatura no Management StudioManagement Studio após o failover, sincronize as assinaturas pull do assinante e sincronize as assinaturas push do publicador ativo.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.

Removendo um banco de dados publicado de um grupo de disponibilidadeRemoving a Published Database from an Availability Group

Considere os problemas a seguir se um banco de dados publicado for removido de um grupo de disponibilidade, ou se um grupo de disponibilidade que tem um banco de dados de membro publicado for removido.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.

  • Se o banco de dados de publicação no publicador original for removido de uma réplica primária do grupo de disponibilidade, execute sp_redirect_publisher sem especificar um valor para o parâmetro @redirected_publisher para remover o redirecionamento para o par publicador/banco de dados.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';  
    

    O banco de dados será deixado no estado de recuperação na réplica primária e deve ser restaurado.The database will be left in the recovering state at the primary and must be restored. Quando você faz isso, a replicação deve funcionar inalterada no Publicador original.Once you do this, replication should work unchanged against the original Publisher.

  • Se o banco de dados de publicação fizer o failover do publicador original para uma réplica e o banco de dados for removido da réplica primária do grupo de disponibilidade, use o procedimento armazenado sp_redirect_publisher para redirecionar explicitamente o publicador original para o novo publicador.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. O banco de dados será deixado no estado de recuperação e deverá ser restaurado.The database will be left in the recovering state and must be restored. Quando você faz isso, a replicação deve continuar a funcionar como ocorria no grupo de disponibilidade.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';  
    

    Não remova o servidor remoto para o publicador original do distribuidor, mesmo que o servidor não possa mais ser acessado.Do not remove the remote server for the original publisher from the distributor, even if the server can no longer be accessed. Os metadados de servidor para o publicador original são necessários no distribuidor para atender consultas de metadados de publicação.The server metadata for the original publisher is needed at the distributor to satisfy publication metadata queries.

  • Se um grupo de disponibilidade completo for removido, o comportamento em relação a um banco de dados replicado de membro será igual ao de um banco de dados publicado que é removido de um grupo de disponibilidade.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. A replicação poderá ser retomada da réplica primária mais recente assim que o banco de dados for restaurado e o redirecionamento for modificado.Replication can be resumed from the last primary as soon as the database has been restored and the redirection has been modified. Se o banco de dados for restaurado em seu publicador original, o redirecionamento deverá ser removido.If the database is restored at its original publisher, redirection should be removed. Se o banco de dados for restaurado em um host diferente, o redirecionamento deverá ser direcionado explicitamente ao novo host.If the database is restored at a different host, redirection should be explicitly directed to the new host.

    Observação

    Quando um grupo de disponibilidade que publicou bancos de dados de membro é removido, ou um banco de dados publicado é removido de um grupo de disponibilidade, todas as cópias dos bancos de dados publicados permanecem no estado de recuperação.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. Se restaurado, cada um aparecerá como um banco de dados publicado.If restored, each will appear as a published database. Apenas uma cópia deve ser retida com metadados de publicação.Only one copy should be retained with publication metadata. Para desabilitar a replicação para uma cópia de banco de dados publicada, primeiro remova todas as assinaturas e publicações do banco de dados.To disable replication for a published database copy, first remove all subscriptions and publications from the database.

    Execute sp_dropsubscription para remover assinaturas da publicação.Run sp_dropsubscription to remove publication subscriptions. Verifique se o parâmetro @ignore_distributributor está definido como 1 para preservar os metadados para o banco de dados de publicação ativo no distribuidor.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;  
    

    Execute sp_droppublication para remover todas as publicações.Run sp_droppublication to remove all publications. Verifique se o parâmetro @ignore_distributor está definido como 1 para preservar os metadados para o banco de dados de publicação ativo no distribuidor.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;  
    

    Execute sp_replicationdboption para desabilitar a replicação para o banco de dados.Run sp_replicationdboption to disable replication for the database.

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

    Neste momento, a cópia do banco de dados publicado pode ser retida ou removida.At this point, the copy of the published database can be retained or dropped.

Tarefas relacionadasRelated Tasks

Consulte TambémSee Also

Pré-requisitos, restrições e recomendações para grupos de disponibilidade AlwaysOn (SQL Server) Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)
Visão geral dos grupos de disponibilidade AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
Grupos de Disponibilidade AlwaysOn: Interoperabilidade (SQL Server) Always On Availability Groups: Interoperability (SQL Server)
Replicação do SQL ServerSQL Server Replication