MSSQL_ENG020598

适用于:SQL ServerAzure SQL 托管实例

消息详细信息

Attribute
产品名称 SQL Server
事件 ID 20598
事件源 MSSQLSERVER
组件 SQL Server 数据库引擎
符号名称
消息正文 应用复制的命令时在订阅服务器上找不到该行。

说明

如果分发代理尝试更新订阅服务器上的行,但该行已删除或该行的主键已更改,则事务性复制中会出现此错误。 默认情况下,事务发布的订阅服务器应视为只读,因为更改不会传播回发布服务器。 对于事务性复制,只有使用可更新订阅或对等复制,才能在订阅服务器上进行用户更改。 有关这些选项的信息,请参阅 Updatable Subscriptions for Transactional ReplicationPeer-to-Peer Transactional Replication

用户操作

解决此问题:

  1. 如果在确定错误源的同时复制必须继续,请为分发代理指定参数 -SkipErrors 20598 。 这样可以使代理跳过导致错误 20598 的更改,同时还可以复制其他更改。

  2. 标识订阅服务器上已删除的行,或主键与发布服务器上的相应行的主键不同的行。 可以使用 tablediff Utility 来确定发布服务器和订阅服务器中不同的行。 有关将此实用工具用于复制数据库的信息,请参阅 比较复制表的差异 (复制编程)

  3. 使用 tablediff 实用工具或其他方法更正订阅服务器上的行。

  4. (可选)删除 -SkipErrors 参数。

另请参阅

错误和事件参考(复制)