Partilhar via


Expiração e desativação da assinatura

As assinaturas podem ser desativadas ou poderão expirar se não forem sincronizadas em um período de retenção especificado. A ação que ocorre depende do tipo de replicação e do período de retenção excedido.

Para definir períodos de retenção, consulte Definir o período de expiração 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 máximo de retenção de distribuição (o parâmetro @max_distretention de sp_adddistributiondb (Transact-SQL)) e o período de retenção de publicação (o parâmetro @retention de sp_addpublication (Transact-SQL)):

  • Se uma assinatura não for sincronizada dentro do período máximo de retenção de distribuição (padrão de 72 horas) e houver alterações no banco de dados de distribuição que não foram entregues ao Assinante, a assinatura será marcada como desativada pelo trabalho de limpeza de distribuição executado no Distribuidor. A assinatura deve ser reinicializada.

  • Se uma assinatura não for sincronizada dentro do período de retenção de publicação (padrão de 336 horas), a assinatura expirará e será descartada pelo trabalho de limpeza de assinatura expirada executado no Publicador. A assinatura deve ser recriada e sincronizada.

    Se uma assinatura push expirar, ela será completamente removida, mas as assinaturas pull não serão. Você deve limpar assinaturas de pull no Subscritor. Para obter mais informações, consulte Excluir uma assinatura pull.

Replicação de mesclagem

A replicação de mesclagem utiliza 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 deve ser reinicializada, pois os metadados da assinatura são removidos. As assinaturas que não são reinicializadas são descartadas pelo trabalho de limpeza de assinatura expirada executado no Publicador. Por padrão, esse trabalho é executado diariamente; ele remove todas as assinaturas push que não foram sincronizadas por um período equivalente ao dobro do período de retenção da publicação. Por exemplo:

  • Se uma publicação tiver um período de retenção de 14 dias, uma assinatura poderá expirar se não tiver sido sincronizada dentro de 14 dias.

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

  • De 14 a 27 dias após a última sincronização, a assinatura pode ser reinicializada.

  • Em 28 dias após a última sincronização, a assinatura é descartada pelo trabalho de limpeza de assinatura expirada . Se uma assinatura push expirar, ela será completamente removida, mas as assinaturas pull não serão. Você deve limpar as assinaturas de pull no Assinante. Para obter mais informações, consulte Excluir uma assinatura de pull.

Considerações para definir o período de retenção de publicação para publicações de mesclagem

Tenha as seguintes considerações em mente ao definir o período de retenção para publicações de mesclagem:

  • O período de retenção para publicações de mesclagem inclui um período de carência de 24 horas para acomodar assinantes em diferentes fusos horários. Se, por exemplo, 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 de replicação por mesclagem depende do período de retenção da publicação.

    • A replicação não pode limpar metadados nos bancos de dados de publicação e assinatura até que o período de retenção seja atingido. Tenha cuidado ao especificar um valor alto para o período de retenção, pois ele pode afetar negativamente o desempenho da replicação. É recomendável que você use uma configuração inferior se puder prever de forma confiável que todos os Assinantes serão sincronizados regularmente dentro desse período.

    • É possível especificar que as assinaturas nunca expiram (um valor de 0 para @retention), mas é altamente recomendável que você não use esse valor, pois os metadados não podem ser limpos.

  • O período de retenção para qualquer republicador deve ser definido como um valor igual ou menor que o período de retenção definido no Publicador original. Você também deve usar os mesmos valores de retenção de publicação para todos os publicadores e seus parceiros de sincronização alternativos. O uso de valores diferentes pode levar à não convergência. Se você 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 um processo de limpeza, o período de retenção da publicação for aumentado e uma assinatura tentar mesclar com o publicador (que já excluiu os metadados), a assinatura não irá expirar devido ao aumento do valor de retenção. No entanto, o Publicador não tem metadados suficientes para baixar alterações no Assinante, o que leva à não convergência.

Consulte Também

Reinicializar assinaturas
Administração do agente de replicação
Assinar publicações