Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Quando um grupo de disponibilidade AlwaysOn faz failover contendo um banco de dados que é um assinante de replicação, a assinatura de replicação poderá falhar. Para assinantes por push de replicação transacional, o agente de distribuição continuará a replicar automaticamente após um failover se a assinatura tiver sido criada usando o nome do ouvinte do grupo de disponibilidade. Para assinantes por pull de replicação transacional, o agente de distribuição continuará a replicar automaticamente após um failover se a assinatura tiver sido criada usando o nome do ouvinte do grupo de disponibilidade e o servidor original do assinante estiver em execução. Isso ocorre porque os trabalhos de agente de distribuição são criados somente no assinante original (réplica primária do grupo de disponibilidade). Para mesclar assinantes, um administrador de replicação deve reconfigurar o assinante manualmente, recriando a assinatura.
O que tem suporte
A replicação do SQL Server tem suporte para o failover automático do publicador e de assinantes transacionais. Os assinantes de mesclagem podem fazer parte de um AG. No entanto, ações manuais são necessárias para configurar o novo assinante após um failover. Não é possível combinar Grupos de Disponibilidade com cenários WebSync e SQL Server Compact.
Criar uma assinatura transacional em um grupo de disponibilidade
Para a replicação transacional, use as seguintes etapas para configurar e fazer o failover de um grupo de disponibilidade do assinante:
Antes de criar a assinatura, adicione o banco de dados do assinante ao grupo de disponibilidade AlwaysOn apropriado.
Adicione o ouvinte do grupo de disponibilidade do assinante como um servidor vinculado a todos os nós do grupo de disponibilidade. Essa etapa garante que todos os parceiros de failover potenciais estejam cientes de e possam se conectar ao ouvinte.
Usando o script da seção Criando uma assinatura push de replicação transacional, crie a assinatura usando o nome do ouvinte de grupo de disponibilidade do assinante. Após um failover, o nome do listener sempre permanece válido, enquanto o nome efetivo do servidor do assinante depende do nó específico que se tornou o novo primário.
Observação
Você deve usar um script Transact-SQL para criar a assinatura. Você não pode usar o Management Studio.
Para criar uma assinatura pull:
Usando o script de exemplo da seção Criando uma assinatura pull de replicação transacional, crie a assinatura usando o nome do ouvinte de grupo de disponibilidade do assinante.
Após o failover, crie o trabalho do agente de distribuição na nova réplica primária usando o procedimento armazenado
sp_addpullsubscription_agent.
Ao criar uma assinatura pull com o banco de dados de assinatura em um AG, após cada failover, você deve desabilitar o trabalho do agente de distribuição na réplica primária antiga e habilitar o trabalho na nova réplica primária.
Criar uma assinatura push de replicação transacional
-- 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
Criar uma assinatura pull de replicação transacional
-- 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
Requisito do ouvinte do grupo de disponibilidade
Ao executar sp_addpullsubscription_agent para um assinante que faz parte de um AG, você deve passar o valor do parâmetro @subscriber para o procedimento armazenado como o nome do listener do AG. Se você executar o SQL Server 2016 (13.x) e versões anteriores, ou o SQL Server 2017 (14.x) antes do CU 16, o procedimento armazenado não referencia o nome do ouvinte do AG. Ele cria a assinatura com o nome do servidor assinante no qual o comando é executado. Para resolver esse problema, atualize manualmente o parâmetro @subscriber no Agente de Distribuição de Replicação com o valor do nome do listener do AG.
Se o ouvinte AG usado pelo assinante utilizar uma porta não padrão, não é possível fornecer o número da porta como parte do nome do ouvinte de AG no parâmetro do Windows. Como solução alternativa, você pode criar um alias para o ouvinte e a porta nos servidores de publicador, distribuidor e assinante usando Aliases (SQL Server Configuration Manager) ou a ferramenta Utilitário de Rede do Cliente SQL Server (cliconfg) para SQL Server 2022 (16.x) e versões posteriores, e passar o alias como o valor do parâmetro @subscriber.
Retomar os Agentes de Mesclagem após o failover do grupo de disponibilidade do assinante
Para a replicação de mesclagem, um administrador de replicação deve reconfigurar o assinante manualmente com as seguintes etapas:
Execute
sp_subscription_cleanuppara remover a assinatura antiga para o assinante. Execute esta ação na nova réplica primária (a antiga réplica secundária).Recrie a assinatura criando uma nova assinatura, começando por um novo instantâneo.
Observação
Esse processo é inconveniente para assinantes de replicação de mesclagem. No entanto, o cenário principal para replicação de mesclagem é usuários desconectados (desktops, laptops, dispositivos móveis), que não utilizam AGs no nível do assinante.