![合并复制发布订阅者方案](https://linux22.com/image/492869/%E5%90%88%E5%B9%B6%E5%A4%8D%E5%88%B6%E5%8F%91%E5%B8%83%E8%AE%A2%E9%98%85%E8%80%85%E6%96%B9%E6%A1%88.png)
我有一个合并发布订阅者拓扑,即 SQL 2008 -> SQL 2000 -> MS Access 2003。在 SQL 2008 级别的一个数据库中,我有一个可更新的出版物(称为目录),该出版物未经过滤,由 SQL 2000 服务器订阅,然后重新发布到 MS Access 客户端。我可以在 MS Access 订阅者处进行插入/更新,它们会顺利地流到 SQL 2008 服务器。在 SQL 2008 上的另一个数据库中,我有几个出版物。第一个出版物有一个基于区域值的静态过滤器。另一个出版物是订单和线路的未过滤出版物。这两个出版物都由 SQL 2000 机器订阅到与目录出版物分开的数据库中。在 SQL 2000 级别,我为每个用户创建过滤的出版物,这些出版物从过滤表中提取,然后加入到订单表。我可以创建 MSAccess 出版物并将它们同步。问题是,当我对任何已筛选的表进行更改时。我看到更新到达 SQL 2000 服务器,但未流向 SQL 2008 服务器。我尝试了虚拟更新,然后更改流向了 SQL 2008 计算机。您知道为什么上传到 SQL 2000 中已筛选的表的更改未传播到 SQL 2008 计算机吗?
答案1
在向 MS 提交案例后,确定在设置 column_tracking = true 时,发布订阅者/重新发布者拓扑中会出现错误。此外,我在顶级发布者处创建了一个静态过滤的发布,但似乎没有帮助。问题是 MS Access 订阅者会将更改上传到重新发布者,但 art_nick/tablenick 为 0。MS 代表还说这发生在 SQL CE 上。无论如何,重新发布者和发布者之间的代理将忽略 msmerge_contents 中的记录,因为未设置 tablenick。为了解决这个问题,我删除了发布者级别的静态过滤发布,并将所有发布更改为使用行级跟踪。完成此操作后,订阅者的所有更改都会按预期传播到发布者。
布赖恩