MSSQL_ENG020598
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure
Detalhes da mensagem
Atributo | Valor |
---|---|
Nome do produto | SQL Server |
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 Distribution Agent 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 Updatable Subscriptions for Transactional Replication e Peer-to-Peer Transactional Replication.
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 tablediff Utility para determinar quais linhas são diferentes nos bancos de dados de publicação e de assinatura. Para obter informações sobre como usar esse utilitário com bancos de dados replicados, consulte Comparar tabelas replicadas para 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 .