我有一个 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 机器?
在使用 MS 打开案例后,确定在设置 column_tracking = true 时,在发布订阅者/重新发布者拓扑中会引发错误。此外,我在顶级发布者处创建了一个静态过滤的发布,但似乎没有帮助。问题是 MS Access 订阅者会将更改上传到重新发布者,但 art_nick/tablenick 为 0。MS 代表还表示这发生在 SQL CE 中。无论如何,重新发布者和发布者之间的代理将忽略 msmerge_contents 中的记录,因为未设置 tablenick。为了解决这个问题,我删除了发布者级别的静态过滤发布,并将所有发布更改为使用行级别跟踪。一旦我这样做了,来自订阅者的所有更改都会按预期传播到发布者。
布赖恩