消息详细信息
| 产品名称 | SQL Server |
| 事件编号 | 20598 |
| 事件源 | MSSQLSERVER |
| 组件 | SQL Server 数据库引擎 |
| 符号名称 | |
| 消息正文 | 应用复制的命令时,在订阅服务器上找不到该行。 |
说明
如果分发代理尝试更新订阅服务器上的行,但该行已被删除或行的主键已更改,则会在事务复制中引发此错误。 默认情况下,事务性发布的订阅者应被视为只读,因为不会将更改传播回发布者。 对于事务复制,只有在使用可更新的订阅或对等复制时,才应在订阅服务器上进行用户更改。 有关这些选项的信息,请参阅用于事务复制的可更新订阅和对等事务复制。
用户操作
若要解决此问题,请执行以下作:
如果在标识错误源时必须继续复制,请为分发代理指定参数 -SkipErrors 20598 。 这允许代理跳过导致错误 20598 的更改,同时允许复制其他更改。
确定订阅服务器上的哪些行已被删除或主键与发布服务器上的相应行不同。 可以使用 表格差异工具 来确定发布和订阅数据库中哪些行不同。 有关将此实用工具用于复制的数据库的信息,请参阅比较复制表的差异(复制编程)。
使用 tablediff 实用工具或其他方法更正订阅服务器上的行。
(可选)删除 -SkipErrors 参数。