Partilhar via


MSSQL_ENG020598

Detalhes da mensagem

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 será gerado na replicação transacional se o Agente de Distribuição tentar atualizar uma linha no Assinante, mas a linha tiver sido excluída ou a chave primária da linha tiver sido alterada. Por padrão, os Assinantes para publicações transacionais devem ser tratados como somente leitura, pois as alterações não são propagadas de volta para o Publicador. Para replicação transacional, as alterações de usuário devem ser feitas no subscritor somente se assinaturas atualizáveis ou replicação ponto a ponto forem usadas. Para obter informações sobre essas opções, consulte As Assinaturas Atualizáveis para Replicação Transacional e Replicação Transacional Ponto a Ponto.

Ação do usuário

Para resolver esse problema:

  1. Se a replicação precisar continuar enquanto você identifica a origem do erro, especifique o parâmetro -SkipErrors 20598 para o Distribution Agent. Isso permite que o agente ignore as alterações que resultam no erro 20598, permitindo que outras alterações sejam replicadas.

  2. Identifique quais linhas no Assinante foram excluídas ou têm uma chave primária diferente das linhas correspondentes no Publicador. Você pode usar o Utilitário tablediff para determinar quais linhas são diferentes nos bancos de dados de publicação e 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).

  3. Corrija as linhas no Assinante usando o utilitário tablediff ou outro método.

  4. (Opcional) Remova o parâmetro -SkipErrors .

Consulte Também

Referência de erros e eventos (replicação)