This error is raised in transactional replication if the Distribution Agent attempts to update a row at the Subscriber, but the row has been deleted or the primary key of the row has been changed. By default, Subscribers to transactional publications should be treated as read-only, because changes are not propagated back to the Publisher. For transactional replication, user changes should be made at the Subscriber only if updatable subscriptions or peer-to-peer replication is used. For information about these options, see Updatable Subscriptions for Transactional Replication and Peer-to-Peer Transactional Replication.
To resolve this problem:
If replication must continue while you identify the source of the error, specify the parameter -SkipErrors 20598 for the Distribution Agent. This allows the agent to skip changes that result in error 20598, while allowing other changes to be replicated.
Identify which rows at the Subscriber have been deleted or have a different primary key than the corresponding rows at the Publisher. You can use the tablediff Utility to determine which rows are different in the publication and subscription databases. For information about using this utility with replicated databases, see Compare Replicated Tables for Differences (Replication Programming).
Correct the rows at the Subscriber using the tablediff utility or another method.
(Optional) Remove the -SkipErrors parameter.