Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Deve ser usado apenas em topologias de replicação que incluem servidores a correr versões do SQL Server anteriores ao SQL Server 2000 (8.x) Service Pack 1.
sp_mergecleanupmetadata permite aos administradores limpar metadados nas MSmerge_genhistorytabelas , MSmerge_contents, e MSmerge_tombstone do sistema. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.
Transact-SQL convenções de sintaxe
Syntax
sys.sp_mergecleanupmetadata
[ [ @publication = ] N'publication' ]
[ , [ @reinitialize_subscriber = ] N'reinitialize_subscriber' ]
[ ; ]
Arguments
[ @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 for explicitamente especificada.
[ @reinitialize_subscriber = ] N'reinitialize_subscriber'
Especifica se deve reinicializar o Assinante.
@reinitialize_subscriber é nvarchar(5), com um padrão de true.
- Se
true, as subscrições são marcadas para reinicialização. - Se
false, as subscrições não estão marcadas para reinicialização.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Remarks
sp_mergecleanupmetadatadeve ser usado apenas em topologias de replicação que incluem servidores a executar versões do SQL Server anteriores ao SQL Server 2000 (8.x) Service Pack 1. Topologias que incluam apenas o SQL Server 2000 (8.x) Service Pack 1 ou versões posteriores devem usar limpeza automática de metadados baseada em retenção. Ao executar este procedimento armazenado, esteja atento ao crescimento necessário e potencialmente grande do ficheiro de registo no computador onde o procedimento armazenado está a correr.
Após sp_mergecleanupmetadata a execução, por defeito, todas as subscrições nos Assinantes de publicações que tenham metadados armazenados em MSmerge_genhistory, MSmerge_contents e MSmerge_tombstone que estejam marcadas para reinicialização, quaisquer alterações pendentes no Assinante são perdidas e o snapshot atual é marcado como obsoleto.
Se existirem várias publicações numa base de dados, e qualquer uma dessas publicações usar um período infinito de retenção de publicações (@retention é 0), correr sp_mergecleanupmetadata não limpa os metadados de rastreio de alterações da replicação da fusão para a base de dados. Por esta razão, use com cautela a retenção infinita de publicações.
Ao executar este procedimento armazenado, pode escolher se reinicializa os Subscritores definindo o parâmetro @reinitialize_subscriber para true (o padrão) ou false. Se sp_mergecleanupmetadata for executado com o parâmetro @reinitialize_subscriber definido para true, um snapshot é reaplicado no Assinante mesmo que a subscrição tenha sido criada sem um snapshot inicial (por exemplo, se os dados e o esquema do snapshot foram aplicados manualmente ou já existiam no Assinante). Definir o parâmetro para false deve ser usado com cautela, porque se a publicação não for reinicializada, deve garantir que os dados no Publisher e no Assinante estão sincronizados.
Independentemente do valor de @reinitialize_subscriber, sp_mergecleanupmetadata falha se houver processos de fusão em curso que estejam a tentar carregar alterações para um Publisher ou para um Assinante republicado no momento em que o procedimento armazenado é invocado.
Executar sp_mergecleanupmetadata com @reinitialize_subscriber = N'verdadeiro'
É recomendado, mas não obrigatório, que parem todas as atualizações das bases de dados de publicações e subscrições. Se as atualizações continuarem, quaisquer atualizações feitas num Assinante desde a última fusão perdem-se quando a publicação é reinicializada, mas a convergência dos dados mantém-se.
Execute uma fusão executando o Merge Agent. Recomendamos que utilize a opção de linha de comandos -Validate agent em cada assinante quando executar o Merge Agent. Se estiver a executar fusões em modo contínuo, veja Considerações Especiais para Fusão em Modos Contínuos mais adiante nesta secção.
Depois de todas as fusões estarem completas, execute
sp_mergecleanupmetadata.Executar
sp_reinitmergepullsubscriptionem todos os subscritores usando subscrição pull nomeada ou anónima para garantir a convergência dos dados.Se estiver a executar fusões em modo contínuo, veja Considerações Especiais para Fusão em Modos Contínuos mais adiante nesta secção.
Regenerar ficheiros snapshot para todas as publicações de fusão envolvidas em todos os níveis. Se tentar fundir sem gerar primeiro o snapshot, recebe um pedido para regenerar o snapshot.
Faz backup da base de dados de publicações. A falha em fazê-lo pode causar uma falha na fusão após a restauração da base de dados de publicação.
Executar sp_mergecleanupmetadata com @reinitialize_subscriber = N'falso'
Pare todas as atualizações das bases de dados de publicações e subscrições.
Execute uma fusão executando o Merge Agent. Recomendamos que utilize a
-Validateopção de linha de comandos do agente em cada assinante quando executar o Merge Agent. Se estiver a executar fusões em modo contínuo, veja Considerações especiais para fusões em modo contínuo mais adiante neste artigo.Depois de todas as fusões estarem completas, execute
sp_mergecleanupmetadata.Se estiver a executar fusões em modo contínuo, veja Considerações Especiais para Fusão em Modos Contínuos mais adiante nesta secção.
Regenerar ficheiros snapshot para todas as publicações de fusão envolvidas em todos os níveis. Se tentar fundir sem gerar primeiro o snapshot, recebe um pedido para regenerar o snapshot.
Faz backup da base de dados de publicações. A falha em fazê-lo pode causar uma falha na fusão após a restauração da base de dados de publicação.
Considerações especiais para fusões de modos contínuos
Se estiveres a correr fusões em modo contínuo, deves ou:
Parar o Merge Agent e depois realizar outra fusão sem o
-Continuousparâmetro especificado.Desative a publicação com
sp_changemergepublicationpara garantir que quaisquer fusões em modo contínuo que estejam a sondar o estado da publicação falham.EXECUTE central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive';
Quando completares o passo 3 da corrida sp_mergecleanupmetadata, retoma as fusões em modo contínuo com base em como as paraste. Uma das seguintes opções:
Adicione novamente o parâmetro -Continuous para o Merge Agent.
Reative a publicação com
sp_changemergepublication.EXECUTE central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active';
Permissions
Apenas os membros do papel fixo de servidor administrador do sistema ou db_owner papel fixo de base de dados podem executar sp_mergecleanupmetadata.
Para usar este procedimento armazenado, o Publisher deve estar a executar o SQL Server 2000 (8.x). Os Assinantes devem estar a correr ou o SQL Server 2000 (8.x) ou o SQL Server 7.0, Service Pack 2.