Sintomas
Durante a sincronização de replicação de intercalação do Microsoft SQL Server 2008 e versões posteriores do SQL Server, o agente de intercalação poderá falhar. Além disso, recebe a seguinte mensagem de erro:
O agente de intercalação falhou após ainda detectar que esse limpeza dos metadados de retenção baseada eliminou metadados no subscritor para que as alterações não enviados para o Publisher. Tem de reinicializar a subscrição (sem transferir). (Origem: MSSQL_REPL, número de erro: MSSQL_REPL-2147199401) Obter ajuda: http://help/MSSQL_REPL-2147199401
Este problema poderá ocorrer por diversas razões. Estas incluem muitas razões que sejam espera que em determinadas circunstâncias. Para determinar se ter encontrado inesperadamente este erro, examine os detalhes de metadados que são descritos na secção "Causa".
Causa
A causa deste problema pode ser encontrada nas seguintes tabelas de sistema no subscritor:
-
dbo.sysMergeSubscriptions
-
dbo.MsMerge_Genhistory
Certifique-se de que o agente de intercalação já não está a sincronizar. Em seguida, execute a seguinte consulta e examine os resultados:
Seleccione sentgen de SubscriberDB.dbo.sysMergeSubscriptions quando pubid = subid e sentgen não é nulo A coluna sentgen marca o grupo mais antigo de alterações que o subscritor enviado para o publisher. Se forem devolvidos vários valores, examine as outras colunas na tabela dbo.sysMergeSubscriptions para se certificar de que está a ver os metadados para a publicação correcto. Em seguida, utilize o valor que esta consulta devolve a seguinte consulta:
Seleccione 20 superior * de SubscriberDB.dbo.MSmerge_genhistory onde geração > = sentgen_value encomenda pela geraçãoO resultado da consulta deve ser semelhantes ao seguinte:poderá encontrar o erro inesperadamente quando se verificam as seguintes condições:
-
O valor na coluna a geração da primeira linha é ligeiramente superior ao valor de sentgen na consulta anterior.
-
O valor na coluna genstatus é 4.
-
O valor na coluna changecount é 0.
Nota O valor da coluna coldate da primeira linha também é normalmente muito mais antigo do que o valor dessa coluna nas outras linhas.
Resolução
Para resolver este problema, reinicializar o subscritor que produziu o erro. Em alguns cenários, poderá conseguir resolver este problema sem uma reinicialização concluída. Contacte o suporte técnico da Microsoft para obter informações sobre uma possível solução. Para evitar futuras ocorrências deste problema, aplique uma das seguintes correcções, dependendo da versão do SQL Server.
Informações de actualização cumulativa
SQL Server 2008
Não existe nenhuma correcção para este problema no SQL Server 2008.
SQL Server 2008 R2 Service Pack 2
A correcção deste problema publicada pela primeira vez na actualização cumulativa 3. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008 R2 Service Pack 2, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2754552 cumulativo pacote 3 de actualizações do SQL Server 2008 R2 Service Pack 2Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o anterior SQL Server 2008 R2 Service Pack 2. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2730301 o SQL Server 2008 R2 cria disponibilizadas após o lançamento do SQL Server 2008 R2 Service Pack 2
Servidor SQL de 2012
A correcção para este problema foi primeiro disponibilizada em 4 de actualização cumulativa. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2012, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2758687 cumulativo pacote 4 de actualizações do SQL Server 2012Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o anterior servidor de SQL 2012. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2692828 o SQL Server 2012 cria disponibilizadas após o lançamento do SQL Server 2012
SQL Server 2008 R2 Service Pack 1
A correcção para este problema foi primeiro disponibilizada em 8 de actualização cumulativa. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008 R2 Service Pack 1, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2723743 cumulativo pacote 8 de actualizações do SQL Server 2008 R2 SP1Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o anterior SQL Server 2008 R2 Service Pack 1. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2567616 o SQL Server 2008 R2 cria disponibilizadas após o lançamento do SQL Server 2008 R2 SP1