【发布时间】:2012-03-31 17:03:32
【问题描述】:
我正在使用ApexSQL Diff API 来同步具有不同身份种子的服务器和客户端数据库。同步后,我为两个数据库重新设置种子。
存在竞争条件。如果服务器在同步之后但在重新播种之前添加新行,则它们的 ID 将错误。 ApexSQL 管理自己的数据库连接,因此我无法在事务中进行同步。
例子:
- 将客户端数据库重新设置为 1000。
- 将服务器数据库重新设置为 0。
- 向客户端添加三行。他们的 ID 为 1000,1001,1002。
- 向服务器添加三行。它们的 ID 为 0,1,2。
- 同步。服务器现在有 ID 为 0,1,2,1000,1001,1002 的行。
- 添加客户端的行已隐式将服务器重新设置为 1003。
- 某个其他进程向服务器添加了一行。它的 ID 为 1003。
- 客户端将服务器重新设置为 3 ... 为时已晚!
【问题讨论】: