我们有一个合并复制拓扑,包括一个发布者、多个发布和多个订阅。它已经运行了至少 8 个月,没有出现任何问题。
几天前我被告知我的采购订单代码被无故“更改”,从标准的“ZWWTP/PO-0092”样式变为新的“ZWWT”样式:采购订单代码中的字符 5 到 8 更改为在某些服务器上,另一个字符串是 chr(0) & chr(1) & chr(0) & chr(1)
我到了这样的地步,似乎只有我的一个复制/订阅过程正在生成这样的虚拟数据:发布者和这个特定订阅者上的 PO 代码与最近更新或添加的记录不再匹配。在订阅者端创建的 PO 的代码在上传到发布者时将被更改(在订阅者端保持干净)。从发布者下载的 PO 将在订阅者上使用更改后的 PO 代码进行传播。
然后,我能够使用一些表比较实用程序 + 一些 UPDATE 语句来清理/调整两台服务器上的数据,但是现在每次在两台服务器之间运行复制时都会出现完全相同的差异:两台服务器上的干净/相同数据将是在成功复制运行后设置回其非收敛状态:相同的记录,相同的值!
我认为我在网上没有留下太多关于数据融合和复制的可用资源。我什么也没找到。我计划在 3 小时内抛出/重建现有的发布/订阅,但我仍在为我的问题寻找一个合理的答案,以免它变成一个精神分析问题:
有人知道发生了什么吗?
PS:顺便说一下,由于PO代码不作为自然键,所以这个复制问题对数据库完整性没有影响。另一个支持代理键的论点总是与大多数时间有效的自然键相反,但这已经在其他地方讨论过......
编辑:好吧,我做到了,但它不起作用!我把订阅和发布都扔了,重新创建了发布,但是我无法生成快照。服务器无法管理它所谓的“发布者的身份范围分配条目”,“在系统表中找不到” MSmerge_identity_range
。
浏览后发现这篇文章说“你删除了发布数据库中创建的第一个发布”时会出现这样的问题</p>
多么可笑!这正是我刚刚所做的!
幸运的是,这个问题应该可以通过 SQLServer 2005 累积包 5 解决,我仍然需要下载和安装。但现在的问题是:在这个 CP5 发布之前,SQLServer 2005 用户如何工作?
EDIT2:累积包 5 不起作用,我仍然无法为我的新复制创建快照!