Partager via


MSSQL_ENG020598

S’applique à : SQL Server Azure SQL Managed Instance

Détails du message

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 20598
Source de l’événement MSSQLSERVER
Composant Moteur de base de données SQL Server
Nom symbolique
Texte du message La ligne n'a pas été trouvée chez l'Abonné lorsque la commande répliquée est appliquée.

Explication

Cette erreur est générée dans la réplication transactionnelle lorsque l'Agent de distribution tente de mettre à jour sur l'Abonné, mais que la ligne a été supprimée ou que la clé primaire de la ligne a été modifiée. Par défaut, les Abonnés à des publications transactionnelles doivent être traités en lecture seule, parce que les changements ne sont pas propagés vers le serveur de publication. Dans le cas de la réplication transactionnelle, les modifications des utilisateurs doivent être effectuées sur l'Abonné, uniquement si les abonnements devant être mis à jour ou la réplication d'égal à égal sont utilisés. Pour plus d'informations sur ces options, consultez Updatable Subscriptions for Transactional Replication et Peer-to-Peer Transactional Replication.

Action de l’utilisateur

Pour rectifier ce problème :

  1. Si la réplication doit continuer pendant que vous identifiez la source de l’erreur, spécifiez le paramètre -SkipErrors 20598 pour l’Agent de distribution. L'agent peut alors ignorer les modifications qui provoquent l'erreur 20598, tout en permettant la réplication des autres modifications.

  2. Identifiez sur l'Abonné les modifications qui ont été supprimées ou qui comportent une clé primaire différente de celle des lignes correspondantes sur le serveur de publication. Vous pouvez utiliser l' tablediff Utility pour déterminer les lignes qui sont différentes dans les bases de données de publication et d'abonnement. Pour plus d’informations sur l’utilisation de cet utilitaire avec des bases de données répliquées, consultez Comparer les tables répliquées pour les différences (programmation de réplication).

  3. Corrigez les lignes sur l'Abonné à l'aide de l'utilitaire tablediff ou d'une autre méthode.

  4. (Facultatif) Supprimez le paramètre -SkipErrors .