Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Uma assinatura de uma publicação de mesclagem expira se não tiver sido sincronizada com o Publicador dentro do período de retenção da publicação. O período de retenção padrão é de 14 dias. É definido usando os parâmetros @retention e @retention_period_unit de sp_addmergepublication. O @retention_period_unit requer que o nível de compatibilidade de publicação seja 90RTM ou superior. Para Assinantes que executam versões anteriores do Microsoft SQL Server, @retention_period_unit está sempre definido como day. Para obter mais informações sobre o nível de compatibilidade, consulte a seção "Nível de compatibilidade para publicações de mesclagem" no artigo Usando várias versões do SQL Server em uma topologia de replicação.
Quando uma assinatura expira, ela deve ser reinicializada, porque os metadados da assinatura são removidos. Para obter mais informações, consulte Limpeza de metadados. As assinaturas que não são reinicializadas são eliminadas pela tarefa de Limpeza de Assinaturas Expiradas que é executada no Publicador. Por padrão, este trabalho é realizado diariamente e remove todas as assinaturas push que não foram sincronizadas durante o 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.
Uma assinatura só expira se houver alterações nos dados na partição dessa assinatura. Por exemplo, suponha que um Assinante receba dados de clientes apenas para clientes na Alemanha. Se o período de retenção estiver definido como 14 dias, a assinatura expirará no dia 14 somente se houver alterações nos dados do cliente dessa região nos últimos 14 dias.
De 14 dias a 27 dias após a última sincronização, a assinatura pode ser reinicializada.
Aos 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 subscritor. Para obter mais informações, consulte Eliminar uma assinatura pull.
Considerações para definir o período de retenção da publicação
Tenha em mente as seguintes considerações ao definir o período de retenção para publicações de mesclagem:
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 os metadados nos bancos de dados de publicação e subscrição 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 isso pode afetar negativamente o desempenho da replicação. Você deve usar uma configuração mais baixa se puder prever de forma confiável que todos os assinantes serão sincronizados regularmente dentro desse período de tempo.
É possível especificar que as assinaturas nunca expiram (um valor de 0 para
@retention), mas você não deve usar esse valor, porque os metadados não podem ser limpos.
O período de retenção para qualquer reeditor deve ser definido como um valor igual ou inferior ao período de retenção definido no Editor original. Se você usar parceiros de sincronização alternativos, deverá usar os mesmos valores de retenção de publicação para os Editores e todos os parceiros de sincronização alternativos. O uso de valores diferentes pode levar à não convergência. Se precisa alterar o valor de retenção de publicação, reinicialize o subscritor para evitar a não convergência de dados.
Se, após uma limpeza, o período de retenção da publicação for aumentado e uma assinatura tentar mesclar com o Editor (que já excluiu os metadados), a assinatura não expirará devido ao valor de retenção aumentado. No entanto, o Editor não tem metadados suficientes para aplicar alterações no Assinante, o que leva à não convergência.
Limpeza de metadados
A limpeza de metadados na replicação de mesclagem é executada pelo procedimento armazenado sp_mergemetadataretentioncleanup. O momento da limpeza é baseado no período de retenção da publicação. Sempre que o Merge Agent é executado para uma assinatura, ele chama o procedimento de limpeza. O procedimento remove metadados anteriores ao período de retenção de publicação das seguintes tabelas do sistema:
- MSmerge_contents
- MSmerge_tombstone
- MSmerge_genhistory
- MSmerge_current_partition_mappings
- MSmerge_past_partition_mappings
- MSmerge_generation_partition_mappings
Essas tabelas são usadas por todas as publicações em um banco de dados de publicação: se houver mais de uma publicação, o período de retenção mais longo será sempre usado para determinar quando os metadados podem ser removidos.