Sintomas

Durante a sincronização da replicação da fusão no Microsoft SQL Server 2008 e versões posteriores do SQL Server, o agente de fusão pode falhar. Além disso, você recebe a seguinte mensagem de erro:

O Agente merge falhou depois de detectar que a limpeza de metadados baseadas em retenção excluiu metadados no Assinante para alterações ainda não enviadas para a Editora. Você deve reinicializar a assinatura (sem upload). (Fonte: MSSQL_REPL, número de erro: MSSQL_REPL-2147199401) Obter ajuda: http://help/MSSQL_REPL-2147199401

Esse problema pode ocorrer por várias razões. Estes incluem muitas razões que são esperadas em determinadas circunstâncias. Para determinar se você encontrou esse erro inesperadamente, examine os detalhes de metadados que são descritos na seção "Causa".

Causa

A causa deste problema pode ser encontrada nas tabelas de sistema a seguir no assinante:

  • dbo.sysMergeSubscriptions

  • dbo.MsMerge_Genhistory

Certifique-se de que o agente de fusão não está mais sincronizando. Em seguida, faça a seguinte consulta e examine os resultados:

selecione sentgen de SubscriberDB.dbo.sysMergeSubscriptions onde pubianos = subid e sentgen não é nulo Query results A coluna sentgen marca o grupo mais antigo de alterações que o assinante enviou para o editor. Se vários valores forem devolvidos, examine as outras colunas na tabela dbo.sysMergeSubscriptions para garantir que você esteja visualizando os metadados para a publicação correta. Em seguida, use o valor que esta consulta retorna na seguinte consulta:

selecione top 20 * de SubscriberDB.dbo.MSmerge_genhistory onde geração >= sentgen_value ordem por geraçãoA saída da consulta deve assemelhar-se ao seguinte:Query result by generation Você pode encontrar o erro inesperadamente quando todas as seguintes condições são verdadeiras:

  • O valor na coluna de geração na primeira linha é ligeiramente maior do que o valor enviado na consulta anterior.

  • O valor na coluna genstatus é 4.

  • O valor na coluna de changecount é 0.

Nota O valor da coluna coldate da primeira linha também é tipicamente muito mais antigo do que o valor dessa coluna nas outras linhas.

Resolução

Para resolver esse problema, reinacione o assinante que produziu o erro. Em alguns cenários, você pode ser capaz de resolver esse problema sem uma reinicialização completa. Entre em contato com os Serviços de Suporte ao Cliente da Microsoft para obter informações sobre uma possível solução alternativa. Para evitar futuras ocorrências deste problema, aplique uma das seguintes correções, dependendo da sua versão do SQL Server.

Informações sobre a atualização cumulativa

SQL Server 2008

Não há correção para esse problema no SQL Server 2008.

SQL Server 2008 R2 Service Pack 2

A correção para esse problema foi lançada pela primeira vez na Atualização Cumulativa 3. Para obter mais informações sobre como obter este pacote de atualização cumulativo para o Pacote de Serviço SQL Server 2008 R2 2, clique no seguinte número do artigo para visualizar o artigo na Base de Conhecimento da Microsoft:

Pacote de atualização cumulativa 2754552 3 para o Pacote de Serviço SQL 2008 R2Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas na versão anterior da correção do Pacote de Serviço 2 r2 do SQL Server 2008. Recomendamos que você considere aplicar a versão de correção mais recente que contém este hotfix. Para mais informações, clique no seguinte número do artigo para visualizar o artigo na Base de Conhecimento da Microsoft:

2730301 O SQL Server 2008 R2 constrói que foram lançados após SQL Server 2008 R2 Service Pack 2 foi lançado

SQL Server 2012

A correção para esse problema foi lançada pela primeira vez na Atualização Cumulativa 4. Para obter mais informações sobre como obter este pacote de atualização cumulativo para o SQL Server 2012, clique no seguinte número do artigo para visualizar o artigo na Base de Conhecimento da Microsoft:

2758687 Pacote de atualização cumulativa 4 para o SQL Server 2012Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com a versão de correção anterior do SQL Server 2012. Recomendamos que você considere aplicar a versão de correção mais recente que contém este hotfix. Para mais informações, clique no seguinte número do artigo para visualizar o artigo na Base de Conhecimento da Microsoft:

2692828 O SQL Server 2012 constrói que foram lançados após sql servidor 2012 foi lançado

SQL Server 2008 R2 Service Pack 1 SQL Server 2008 R2 Service Pack 1

A correção para esse problema foi lançada pela primeira vez na Atualização Cumulativa 8. Para obter mais informações sobre como obter este pacote de atualização cumulativo para o Pacote de Serviço SQL 2008 R2 1, clique no seguinte número do artigo para visualizar o artigo na Base de Conhecimento da Microsoft:

2723743 Pacote de atualização cumulativa 8 para SQL Server 2008 R2 SP1Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas na versão anterior da correção do Pacote de Serviço R2 r2 do SQL Server 2008. Recomendamos que você considere aplicar a versão de correção mais recente que contém este hotfix. Para mais informações, clique no seguinte número do artigo para visualizar o artigo na Base de Conhecimento da Microsoft:

2567616 O SQL Server 2008 R2 constrói que foram lançados após SQL Server 2008 R2 SP1 foi lançado

Precisa de mais ajuda?

Expanda suas habilidades

Explore o treinamento >

Obtenha novos recursos primeiro

Ingressar no Microsoft Insider >

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×