Compartilhar via


sp_mergecleanupmetadata (Transact-SQL)

Aplica-se: SQL Server

Deve ser usado apenas em topologias de replicação que incluem servidores que executam versões do SQL Server anteriores ao SQL Server 2000 (8.x) Service Pack 1. sp_mergecleanupmetadata Permite que os administradores limpem os MSmerge_genhistorymetadados nas tabelas , MSmerge_contentse MSmerge_tombstone System. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_mergecleanupmetadata
    [ [ @publication = ] N'publication' ]
    [ , [ @reinitialize_subscriber = ] N'reinitialize_subscriber' ]
[ ; ]

Argumentos

@publication [ = ] N'publicação'

O nome da publicação. @publication é sysname, com um padrão de , que limpa os metadados de %todas as publicações. A publicação já deve existir se explicitamente especificada.

@reinitialize_subscriber [ = ] N'reinitialize_subscriber'

Especifica se o Assinante deve ser reinicializado. @reinitialize_subscriber é nvarchar(5), com um padrão de true.

  • Se true, as assinaturas serão marcadas para reinicialização.
  • Se false, as assinaturas não serão marcadas para reinicialização.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_mergecleanupmetadata só deve ser usado em topologias de replicação que incluam servidores que executam versões do SQL Server anteriores ao SQL Server 2000 (8.x) Service Pack 1. As topologias que incluem apenas o SQL Server 2000 (8.x) Service Pack 1 ou posterior devem usar a limpeza automática de metadados baseada em retenção. Ao executar esse procedimento armazenado, tenha cuidado com o crescimento potencialmente grande e necessário do arquivo de log no computador em que o procedimento armazenado está sendo executado.

Depois sp_mergecleanupmetadata que são executadas, por padrão, todas as assinaturas nos Assinantes de publicações que têm metadados armazenados no MSmerge_genhistory, MSmerge_contents e MSmerge_tombstone são marcadas para reinicialização, todas as alterações pendentes no Assinante são perdidas e o instantâneo atual é marcado como obsoleto.

Se houver várias publicações em um banco de dados e qualquer uma dessas publicações usar um período de retenção de publicação infinito (@retention é 0), a execução sp_mergecleanupmetadata não limpará os metadados de controle de alterações de replicação de mesclagem para o banco de dados. Por esse motivo, use a retenção de publicação infinita com precaução.

Ao executar esse procedimento armazenado, você pode escolher se deseja reinicializar os Assinantes definindo o parâmetro @reinitialize_subscriber como true (o padrão) ou false. Se sp_mergecleanupmetadata for executado com o parâmetro @reinitialize_subscriber definido como true, um instantâneo será reaplicado no Assinante, mesmo que a assinatura tenha sido criada sem um instantâneo inicial (por exemplo, se os dados e o esquema do instantâneo foram aplicados manualmente ou já existiam no Assinante). Definir o parâmetro como false deve ser usado com cuidado, pois se a publicação não for reinicializada, você deverá garantir que os dados no Publicador e no Assinante sejam sincronizados.

Independentemente do valor de @reinitialize_subscriber, sp_mergecleanupmetadata falhará se houver processos de mesclagem em andamento que estejam tentando carregar alterações em um Publicador ou em um Assinante de republicação no momento em que o procedimento armazenado for invocado.

Execute sp_mergecleanupmetadata com @reinitialize_subscriber = N'true'

  1. É recomendado, mas não obrigatório, que você interrompa todas as atualizações nos bancos de dados de publicação e assinatura. Se a atualização continuar, qualquer atualização feita no Assinante desde a última mesclagem será perdida quando a publicação for reiniciada, mas a convergência dos dados será mantida.

  2. Execute uma mesclagem executando o Agente de Mesclagem. Recomendamos que você use a opção de linha de comando -Validate agent em cada Assinante ao executar o Merge Agent. Se você estiver executando mesclagens de modo contínuo, consulte Considerações especiais para mesclagens de modo contínuo mais adiante nesta seção.

  3. Depois que todas as mesclagens forem concluídas, execute sp_mergecleanupmetadata.

  4. Execute sp_reinitmergepullsubscription em todos os assinantes usando a assinatura pull nomeada ou anônima para garantir a convergência de dados.

  5. Se você estiver executando mesclagens de modo contínuo, consulte Considerações especiais para mesclagens de modo contínuo mais adiante nesta seção.

  6. Gere novamente arquivos de instantâneo para todas as publicações de mesclagem envolvidas em todos os níveis. Se tentar fazer a mesclagem sem primeiro gerar novamente o instantâneo, você será solicitado a gerar o instantâneo novamente.

  7. Faça um backup do banco de dados de publicação. Falha nesse procedimento pode causar uma falha de mesclagem depois da restauração de um banco de dados de publicação.

Execute sp_mergecleanupmetadata com @reinitialize_subscriber = N'false'

  1. Pare todas as atualizações nos bancos de dados de publicação e assinatura.

  2. Execute uma mesclagem executando o Agente de Mesclagem. Recomendamos que você use a opção de linha de comando do -Validate agente em cada Assinante ao executar o Merge Agent. Se você estiver executando mesclagens de modo contínuo, consulte Considerações especiais para mesclagens de modo contínuo mais adiante neste artigo.

  3. Depois que todas as mesclagens forem concluídas, execute sp_mergecleanupmetadata.

  4. Se você estiver executando mesclagens de modo contínuo, consulte Considerações especiais para mesclagens de modo contínuo mais adiante nesta seção.

  5. Gere novamente arquivos de instantâneo para todas as publicações de mesclagem envolvidas em todos os níveis. Se tentar fazer a mesclagem sem primeiro gerar novamente o instantâneo, você será solicitado a gerar o instantâneo novamente.

  6. Faça um backup do banco de dados de publicação. Falha nesse procedimento pode causar uma falha de mesclagem depois da restauração de um banco de dados de publicação.

Considerações especiais para mesclagens de modo contínuo

Se você estiver executando mesclagens de modo contínuo, deverá:

  • Pare o Merge Agent e execute outra mesclagem sem o -Continuous parâmetro especificado.

  • Desative a publicação com sp_changemergepublication para garantir que todas as mesclagens de modo contínuo que estejam sondando o status da publicação falhem.

    EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive';
    

Quando você tiver concluído a etapa 3 da execução sp_mergecleanupmetadata, retome as mesclagens de modo contínuo com base em como você as interrompeu. Qualquer um:

  • Adicione o parâmetro -Continuous de volta para o Merge Agent.

  • Reative a publicação com sp_changemergepublication.

    EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active'
    

Permissões

Somente membros da função de servidor fixa sysadmin ou db_owner função de banco de dados fixa podem executar sp_mergecleanupmetadata.

Para usar esse procedimento armazenado, o Publicador deve estar executando o SQL Server 2000 (8.x). Os Assinantes devem estar executando o SQL Server 2000 (8.x) ou o SQL Server 7.0, Service Pack 2.