【发布时间】:2011-03-01 01:01:04
【问题描述】:
标准事务复制更新了两个主数据库和两个只读副本。需要从两个只读数据库中映射一些实体,假设 A 数据库包含订单,B 数据库包含行。
问题是复制到一个数据库可能会滞后于复制第二个数据库,并且在映射 R 数据库时会有不一致的数据。例如。
我们在 19:00 和 19:03 存储了 2 个订单。映射过程从 19:05 开始,但是到映射的时刻 A 数据库复制处理了到 19:03 的所有更改,而 B 数据库复制处理了直到 19:00 的所有更改。映射后,我们将拥有截至 19:03 的订单和截至 19:00 的行的订单实体。麻烦是有保证的:)
在我的特殊情况下,两个数据库都有时间模型,因此可以获取每个时间片的数据,但问题是确定最近复制的时间。
问题:如何同步多个数据库的复制过程以避免上述情况?或者换句话说,如何比较每个数据库中上次复制的时间?
更新:
我认为同步的唯一方法是不断地将时间戳写入每个数据库的服务表中,并在复制的服务器上检查这些时间戳。这是可以接受的解决方案吗?
【问题讨论】:
-
鉴于您的 cmets 此处和下方,定期在两个数据库中插入一个新的日期时间,将其复制到共享数据库,并且仅在这两个日期之前提取数据似乎是可行的方法。看起来您回答了自己的问题...
标签: sql-server sql-server-2008 synchronization replication