Desativação e expiração de assinatura
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure
As assinaturas podem ser desativadas ou podem expirar se não forem sincronizadas dentro de um período de retençãoespecificado. A ação que ocorre depende do tipo de replicação e do período de retenção excedido.
Para definir os períodos de retenção, consulte Definir o período de validade para assinaturas, Definir o período de retenção de distribuição para publicações transacionais (SQL Server Management Studio) e Configurar publicação e distribuição.
Replicação transacional
A replicação transacional usa o período de retenção máximo da distribuição (o parâmetro @max_distretention
de sp_adddistributiondb (Transact-SQL)) e o período de retenção da publicação (o parâmetro @retention
de sp_addpublication (Transact-SQL)):
Se a assinatura não for sincronizada dentro do período de retenção máximo da distribuição (padrão de 72 horas) e houver mudanças no banco de dados de distribuição que não foram entregues ao Assinante, a assinatura será marcada como desativada pelo trabalho de Limpeza da assinatura expirada sendo executado no Distribuidor. A assinatura deverá ser reinicializada.
Se a assinatura não for sincronizada no período de retenção máximo da publicação (padrão de 336 horas), a assinatura expirará e será descartada pelo trabalho de Limpeza de assinaturas expiradas executado no Publicador. (Antes da correção em KB4014798, o trabalho se chamava Limpeza de distribuição.) A assinatura deve ser recriada e sincronizada.
Se uma assinatura push expirar, ela é completamente removida, mas não as assinaturas pull. Você deve limpar as assinaturas pull no Assinante. Para obter mais informações, consulte Delete a Pull Subscription.
Replicação de mesclagem
A replicação de mesclagem usa o período de retenção da publicação (os parâmetros @retention
e @retention_period_unit
de sp_addmergepublication (Transact-SQL)). Quando uma assinatura expira, ela deverá ser reiniciada, pois os metadados da assinatura serão removidos. As assinaturas que não forem reinicializadas serão descartadas pelo trabalho de Limpeza de assinaturas expiradas executado no Publicador. Por padrão, este trabalho é executado diariamente, ele remove todas as assinaturas push que não sincronizaram por um período duas vezes maior do período de retenção da publicação. Por exemplo:
Se a publicação tiver um período de retenção de 14 dias, uma assinatura poderá expirar se não sincronizar dentro de 14 dias.
Se o Publicador estiver executando o SQL Server 2005 (9.x) ou uma versão posterior e o agente para a assinatura pertencer ao SQL Server 2005 (9.x) ou versão posterior, uma assinatura só expirará se ocorrerem mudanças nos dados naquela partição da assinatura. Por exemplo, se um Assinante receber dados de cliente apenas de clientes na Alemanha. Se o período de retenção for definido em 14 dias, a assinatura expirará no 14º dia somente se ocorreram mudanças nos dados do cliente alemão nos últimos 14 dias.
Do 14º dia até 27 dias após a última sincronização, a assinatura poderá ser reinicializada.
No 28º dia após a última sincronização, a assinatura será descartada pelo trabalho de Limpeza de assinaturas expiradas . Se uma assinatura push expirar, ela é completamente removida, mas não as assinaturas pull. Você deve limpar as assinaturas pull no Assinante. Para obter mais informações, consulte Delete a Pull Subscription.
Considerações para definir o período de retenção da publicação para as publicações de mesclagem
Lembre-se das considerações a seguir ao definir o período de retenção para publicações de mesclagem:
O período de retenção para publicações de mesclagem tem um período de tolerância de 24 horas para incluir os Assinantes em fusos horários diferentes. Por exemplo, se você definir um período de retenção de um dia, o período de retenção real será de 48 horas.
A limpeza dos metadados da replicação de mesclagem depende do período de retenção da publicação:
A replicação não poderá limpar os metadados na publicação e nos bancos de dados de assinatura antes de o período de retenção ser atingido. Cuidado ao especificar um valor alto para o período de retenção, pois poderá impactar negativamente o desempenho da replicação. Recomendamos que use uma definição mais baixa se puder prevenir com certeza que todos os Assinantes sincronizarão normalmente dentro daquele período de tempo.
É possível especificar que as assinaturas nunca expirem (um valor igual a 0 para
@retention
), mas é altamente recomendável não usar esse valor, pois os metadados não podem ser limpos.
O período de retenção para qualquer republicador deve ser definido com um valor igual ou inferior ao período de retenção definido no Publicador original. Você também deve usar os mesmos valores de retenção da publicação para todos os Publicadores e seus parceiros de sincronização alternativos. O uso de valores diferentes pode levar a uma não convergência. Se precisar alterar o valor de retenção da publicação, reinicialize o Assinante para evitar a não convergência de dados.
Se, após a limpeza, o período de retenção da publicação aumentar e uma assinatura tentar a mesclagem com o Publicador (que já excluiu os metadados), a assinatura não expirará devido ao aumento no valor da retenção. Porém, o Publicador não tem metadados suficientes para baixar as mudanças para o Assinante, o que resulta em uma não convergência.