同步数据库然后重新种子没有竞争条件

时间:2012-03-15 07:28:11

标签: database race-condition

我正在使用ApexSQL Diff API将服务器和客户端数据库与不同的身份种子同步。同步后,我重新安装了两个数据库。

有竞争条件。如果服务器在同步之后但在重新播种之前添加新行,则它们将具有错误的ID。 ApexSQL管理自己的数据库连接,因此无法在事务内部进行同步。

示例:

  1. 将客户端数据库重新设置为1000。
  2. 将服务器数据库重新设置为0。
  3. 向客户端添加三行。他们有ID 1000,1001,1002。
  4. 向服务器添加三行。他们有ID 0,1,2。
  5. 同步。服务器现在具有ID为0,1,2,1000,1001,1002的行。
  6. 添加客户端的行已将服务器隐式重新设置为1003。
  7. 通过其他进程将一行添加到服务器。它有ID 1003。
  8. 客户端将服务器重新设置为3 ......太晚了!

1 个答案:

答案 0 :(得分:0)

我们为客户端添加了负ID,从而避免了重新安装服务器: - )