sp_mergecleanupmetadata (Transact-SQL)

Aplica-se a: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_mergecleanupmetadatapermite que os administradores limpem os metadados nas tabelas , MSmerge_contentse MSmerge_tombstone systemMSmerge_genhistory. 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 incluem 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 de executadas, por padrão, todas as assinaturas nos Assinantes de publicações que têm metadados armazenados no , e são marcadas para reinicialização, MSmerge_contents quaisquer alterações pendentes no MSmerge_genhistoryAssinante são perdidas e MSmerge_tombstone 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 for 0), a execução sp_mergecleanupmetadata não limpará os metadados de controle de alterações de replicação de mesclagem do 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 Assinantes definindo o parâmetro @reinitialize_subscriber como (o padrão) ou false.true Se sp_mergecleanupmetadata for executado com o parâmetro @reinitialize_subscriber definido como true, um instantâneo será reaplicado no Assinante mesmo se a assinatura tiver 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). A definição do parâmetro a ser deve ser usada com cuidado, pois se a false publicação não for reinicializada, você deverá garantir que os dados no Publicador e no Assinante estejam 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 chamado.

Execute sp_mergecleanupmetadata com @reinitialize_subscriber = N'true'

  1. É recomendado, mas não exigido, 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 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 dos 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 no modo contínuo, deverá de:

  • 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 estão pesquisando 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 de execução sp_mergecleanupmetadatado , retomar as mesclagens no 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_changemergepublicationo .

    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.