MSSQL_ENG020598
Detalhes da mensagem
Nome do produto |
SQL Server |
Versão do produto |
10.0 |
Número da compilação do produto |
|
ID do evento |
20598 |
Origem do evento |
MSSQLSERVER |
Componente |
Mecanismo de Banco de Dados do SQL Server |
Nome simbólico |
|
Texto da mensagem |
A linha não foi encontrada no Assinante ao aplicar o comando replicado. |
Explicação
Esse erro ocorre na replicação transacional quando o Agente de Distribuição tenta atualizar uma linha no Assinante, mas a linha foi excluída ou a chave primária da linha foi alterada. Por padrão, os Assinantes de publicações transacionais devem ser tratados como somente leitura, porque as alterações não são propagadas de volta para o Publicador. Para a replicação transacional, as alterações do usuário devem ser realizadas no Assinante somente se forem usadas assinaturas que podem ser atualizadas ou replicação ponto a ponto (P2P). Para obter mais informações sobre essas opções, consulte Assinaturas atualizáveis para replicação transacional e Replicação transacional ponto a ponto.
Ação do usuário
Para resolver esse problema:
Se for necessário que a replicação continue enquanto você identifica a origem do erro, especifique o parâmetro -SkipErrors 20598 para o Agente de Distribuição. Isso permite que o agente ignore alterações que resultem no erro 20598, enquanto permite que outras alterações sejam replicadas.
Identifique quais linhas no Assinante foram excluídas ou possuem uma chave primária diferente daquela das linhas correspondentes no Publicador. É possível usar o Utilitário tablediff para determinar quais linhas são diferentes nos bancos de dados de publicação e de assinatura. Para obter mais informações sobre como usar esse utilitário com bancos de dados replicados, consulte Comparar tabelas replicadas para descobrir diferenças (Programação de replicação).
Corrija as linhas no Assinante usando o utilitário tablediff ou qualquer outro método.
(Opcional) Remova o parâmetro -SkipErrors.