Partilhar via


sp_mergecleanupmetadata (Transact-SQL)

Deve ser usado somente em topologias de replicação que incluem servidores que executam versões do MicrosoftSQL Server anteriores ao SQL Server 2000 Service Pack 1. sp_mergecleanupmetadata permite que os administradores limpem metadados nas tabelas do sistema MSmerge_genhistory, MSmerge_contents e MSmerge_tombstone. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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

Argumentos

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

  • [ @reinitialize_subscriber = ] 'subscriber'
    Especifica se o Assinante deve ser reiniciado. subscriber é nvarchar(5), pode ser TRUEou FALSE, com um padrão TRUE. Se for TRUE, as assinaturas serão marcadas para reinicialização. Se for FALSE, as assinaturas não serão marcadas para reinicialização.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_mergecleanupmetadata só deve ser usado em topologias de replicação que incluem servidores executando versões do SQL Server anteriores ao SQL Server 2000 Service Pack 1. Topologias que só incluem o SQL Server 2000 Service Pack 1 ou versão posterior deveriam usar limpeza automática de metadados com base em retenção. Para obter mais informações sobre limpeza de metadados, consulte Como a replicação de mesclagem funciona. 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.

Observação sobre cuidadosCuidado

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

ObservaçãoObservação

Se houver várias publicações em um banco de dados e uma dessas publicações usar um período de retenção de publicação infinito (@retention=0), a execução de sp_mergecleanupmetadata não limpará os metadados de controle da alteração 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 reiniciar 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 ao Assinante, mesmo se a assinatura tiver sido criada sem um instantâneo inicial (por exemplo, se os dados de instantâneo e esquema foram aplicados manualmente ou já existiam no Assinante). A definição do parâmetro como FALSE deve ser usada com cuidado porque se a publicação não for reiniciada você deverá garantir que os dados no Publicador e no Assinante sejam sincronizados.

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

Executando sp_mergecleanupmetadata com @reinitialize\_subscriber = 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 Merge Agent. Recomendamos que você use a opção de linha de comando de agente –Validate 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 posteriormente 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 convergência de dados.

  5. Se você estiver executando mesclagens de modo contínuo, consulte Considerações especiais para mesclagens de modo contínuo posteriormente 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.

Executando sp_mergecleanupmetadata com @reinitialize\_subscriber = FALSE:

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

  2. Execute uma mesclagem executando o Merge Agent. Recomendamos que você use a opção de linha de comando de agente –Validate 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 posteriormente nesta seção.

  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 posteriormente 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 do modo contínuo, deverá:

  • Interromper o Merge Agent e executar outra mesclagem sem o parâmetro -Continuous especificado.

  • Desativar a publicação com sp_changemergepublication para garantir que qualquer mesclagem do modo contínuo que esteja sondando aquele status de publicação falhe.

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

Quando você concluir a etapa 3 na execução de sp_mergecleanupmetadata, retome as mesclagens em modo contínuo com base em como você as interrompeu. Ou:

  • Adicione o parâmetro –Continuous novamente no 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 podem executar sp_mergecleanupmetadada.

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