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 :
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.
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).
Corrigez les lignes sur l'Abonné à l'aide de l'utilitaire tablediff ou d'une autre méthode.
(Facultatif) Supprimez le paramètre -SkipErrors .