Sql server SQL Server 2012事务性复制:获取;“未找到行”;及;无法在“对象”中插入重复键;错误
很长一段时间,一切都很好。但现在(可能几周后),我在复制监视器中发现了一个奇怪的错误:Sql server SQL Server 2012事务性复制:获取;“未找到行”;及;无法在“对象”中插入重复键;错误,sql-server,sql-server-2012,database-replication,transactional-replication,Sql Server,Sql Server 2012,Database Replication,Transactional Replication,很长一段时间,一切都很好。但现在(可能几周后),我在复制监视器中发现了一个奇怪的错误: 一个数据库出现错误2627(违反了%ls约束''%1!''。 无法在对象'%1!'中插入重复的键 另一个出现错误20598(应用复制命令时在订阅服务器上找不到该行) 我们有一个发行商+发行商和一个订户 所以每天晚上我都会创建新的快照并重新初始化订阅(这表明它没问题),每天早上我都会看到相同的错误。问题是我不明白为什么会这样。据我所知,在拍摄快照时,复制会将当前状态数据库传递给订阅服务器,并在创建快照后发生
- 一个数据库出现错误2627(违反了%ls约束''%1!''。 无法在对象'%1!'中插入重复的键
- 另一个出现错误20598(应用复制命令时在订阅服务器上找不到该行)
我已经阅读了关于在第二个错误中使用sp_browsereplcmds的建议,但它仅仅说明了在∢", 无论这意味着什么。请您告诉我如何使其重新工作?是否有其他方法插入订阅表?如果发布表的标识为“不用于复制”“,则标识值将保留在订阅服务器上,但订阅服务器上的单独插入将仅采用下一个可用标识值。所以你可能会遇到身份冲突。您是否使用标识列?如果是,它们是否使用“不用于复制”?+1(关于“是否有其他内容插入到订阅表中?”)。关于“未找到行”错误,是否还有其他东西正在从订阅表中删除?我不认为用户软件可以插入或删除记录,因为它需要为新服务器重新编译软件,这是我们以前从未为该订阅服务器做过的。我无法想象它还能是什么。。如果没有别的,今晚晚些时候我会尝试为他们重新创建出版物和订阅。从最初的帖子开始已经三年多了,但我想知道是否有任何进一步的发现。我们目前在MS SQL 2016中也面临同样的问题,随机表在随机时间发生错误(密钥冲突),导致复制停止。应用程序中的任何内容都不会写入订阅服务器数据库,如果它这样做,那么错误将持续发生。我并不了解MS SQL中事务复制引擎的内部结构,但所有迹象都表明存在一个潜在缺陷,导致记录被复制/重试两次。