Validade e desativação de assinatura

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

Replicação transacional

A replicação transacional usa o período de retenção máximo da distribuição (o parâmetro @max_distretention da sp_adddistributiondb (Transact-SQL)) e o período de retenção da publicação (o parâmetro @retention da 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 distribuição 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. A assinatura deverá ser criada novamente e ser 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 Como excluir uma assinatura pull (Programação Transact-SQL de replicação).

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 do 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 ou uma versão posterior e o agente para a assinatura pertencer ao SQL Server 2005 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 Como excluir uma assinatura pull (Programação Transact-SQL de replicação).

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á 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 até que o período de retenção seja 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 para que as assinaturas nunca expirem (um valor de 0 para a @retention), mas recomendamos não usar este valor, pois os metadados não poderão 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.