Expiração e desativação da assinatura

Aplica-se a:SQL ServerInstâ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_distretentionde sp_adddistributiondb (Transact-SQL)) e o período de retenção da publicação (o parâmetro @retentionde sp_addpublication (Transact-SQL)):

  • Se uma assinatura não estiver sincronizada dentro do período máximo de retenção de distribuição (padrão de 72 horas) e houver mudanças no banco de dados de distribuição que não são entregues ao assinante, a assinatura é marcada como desativada pelo trabalho de limpeza de Assinatura Expirada que roda no Distribuidor. Você deve reiniciar a assinatura.

  • Se uma assinatura não estiver sincronizada dentro do período de retenção de publicação (padrão de 336 horas), a assinatura expira e é cancelada pelo trabalho de limpeza de assinatura expirada que roda no Publisher. (Antes da correção introduzida pelo KB4014798, o trabalho era denominado Limpeza de distribuição.) Você deve recriar e sincronizar a assinatura.

    Se uma assinatura push expirar, ela será completamente removida, mas as assinaturas pull não serão completamente removidas. Você deve limpar as assinaturas pull no Assinante. Para obter mais informações, consulte Delete a Pull Subscription.

Replicação por mesclagem

A replicação de mesclagem usa o período de retenção da publicação (os parâmetros @retentione @retention_period_unitde sp_addmergepublication (Transact-SQL)). Quando uma assinatura expira, você deve reinicializá-la porque o processo remove os metadados da assinatura. O trabalho de limpeza de assinaturas expiradas que roda no Publisher elimina as assinaturas que não são reinicializadas. Por padrão, esse trabalho é executado diariamente. Ele remove todas as assinaturas push não sincronizadas pelo dobro do período equivalente ao de retenção da publicação. Por exemplo:

  • Se uma publicação tiver um período de retenção de 14 dias, uma assinatura pode expirar se não sincronizar em até 14 dias.

    Se o Publisher estiver rodando SQL Server 2005 (9.x) ou uma versão posterior e o agente da assinatura for do SQL Server 2005 (9.x) ou de uma versão posterior, uma assinatura só expira se houver alterações nos dados da partição dessa assinatura. Por exemplo, suponha que um Assinante receba dados de clientes somente de clientes na Alemanha. Se o período de retenção for definido para 14 dias, a assinatura expira no dia 14 somente se houver alterações nos dados dos clientes alemães nos últimos 14 dias.

  • De 14 a 27 dias após a última sincronização, você pode reiniciar a assinatura.

  • Aos 28 dias da última sincronização, o trabalho de limpeza da assinatura expirada cancela a assinatura. Se uma assinatura push expira, ela é completamente removida, mas as assinaturas pull não são. 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 de publicações para publicações de fusão

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 fusão inclui um período de carência de 24 horas para acomodar assinantes em diferentes fusos horários. Por exemplo, se você definir um período de retenção de um dia, o período real de retenção é de 48 horas.

  • A limpeza dos metadados de replicação da mescagem depende do período de retenção da publicação:

    • A replicação não pode limpar metadados nos bancos de dados de publicações e assinaturas até que o período de retenção seja alcançado. Tenha cautela ao especificar um valor alto para o período de retenção, pois isso pode afetar negativamente o desempenho da replicação. Use uma configuração mais baixa se puder prever com confiabilidade que todos os assinantes irão sincronizar regularmente nesse período.

    • Você pode especificar que assinaturas nunca expiram (valor 0 para @retention), mas não use esse valor porque os metadados não podem ser limpos.

  • Defina o período de retenção para qualquer republisher para um valor igual ou menor que o período de retenção estabelecido no Publisher original. Além disso, use os mesmos valores de retenção de publicações para todos os Publicadores e seus parceiros de sincronização alternativos. Usar valores diferentes pode levar à 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 você aumentar o período de retenção da publicação depois de uma limpeza e uma assinatura tentar a mesclagem com o Editor (que já excluiu os metadados), a assinatura não vai expirar por causa do aumento no valor da retenção. No entanto, o Publisher não tem metadados suficientes para transferir as alterações para o Assinante, o que leva à falta de convergência.