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 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: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