2012-03-15 6 views
0

私はApexSQL Diff APIを使用して、サーバーとクライアントのデータベースを異なるIDシードで同期しています。同期後、私は両方のデータベースを再シードしました。syncrhoniseデータベースは、競合状態なしで再シードします

競合状態があります。同期後でも再シードする前にサーバーが新しい行を追加すると、IDが間違って表示されます。 ApexSQLは独自のデータベース接続を管理しているため、トランザクション内で同期することはできません。

例:

  1. 再シードクライアントデータベース1000
  2. 再シードサーバーデータベースへ0
  3. に、クライアントに3行を追加します。 IDは1000,1001,1002です。
  4. 3行をサーバーに追加します。彼らはID 0,1,2を持っています。
  5. 同期します。サーバーはID 0,1,2,1000,1001,1002の行を持つようになりました。
  6. クライアントの行を追加すると、サーバーは1003に暗黙的に再配置されます。
  7. 他のプロセスによって行がサーバーに追加されます。 IDは1003です。
  8. クライアントはサーバーを3に再シードします...遅すぎます!

答えて

0

私たちは、それによって

:-)サーバーを再シード未然に防ぐ、クライアントに対して負のIDと一緒に行きました