2012-03-15 1 views
0

ApexSQL Diff API을 사용하여 서버와 클라이언트 데이터베이스를 서로 다른 ID 시드와 동기화합니다. 동기화 후 두 데이터베이스를 모두 다시 시드했습니다.syncrhonise 데이터베이스가 경쟁 조건없이 다시 시드 됨

경쟁 조건이 있습니다. 동기화 후 재 시드하기 전에 서버가 새 행을 추가하면 ID가 잘못 표시됩니다. ApexSQL은 자체 데이터베이스 연결을 관리하므로 트랜잭션 내에서 동기화 할 수 없습니다.

예 :

  1. 시드 클라이언트 데이터베이스 0
  2. 에 서버 데이터베이스를 다시 시드
  3. 1000에 클라이언트에 세 개의 행을 추가합니다. ID가 100010011002입니다.
  4. 세 개의 행을 서버에 추가하십시오. 그들은 ID가 0, 1, 2입니다.
  5. 동기화. 이제 서버에는 ID가 012100010011002 인 행이 있습니다.
  6. 클라이언트의 행을 추가하면 서버가 암시 적으로 1003으로 다시 시드됩니다.
  7. 다른 프로세스에 의해 서버에 행이 추가됩니다. ID는 1003입니다.
  8. 클라이언트가 서버를 3 ...에 다시 시드합니다. 너무 늦었습니다!

답변

0

클라이언트에 대해 음수 ID를 사용하여 서버를 다시 시드하지 않아도되었습니다.

관련 문제