Синхронизировать базы данных затем повторно заполнить без условий гонки - PullRequest
0 голосов
/ 15 марта 2012

Я использую ApexSQL Diff API для синхронизации серверных и клиентских баз данных с разными семенами идентификации.После синхронизации я повторно заполнил обе базы данных.

Возникло состояние гонки.Если сервер добавляет новые строки после синхронизации, но перед повторным заполнением, они будут иметь неправильный идентификатор.ApexSQL управляет своими собственными подключениями к базе данных, поэтому я не могу выполнить синхронизацию внутри транзакции.

Пример:

  1. Повторное заполнение базы данных клиента до 1000.
  2. Повторное заполнение базы данных сервера до0.
  3. Добавьте три строки клиенту.У них есть ID 1000,1001,1002.
  4. Добавьте три строки на сервер.У них есть ID 0,1,2.
  5. Синхронизация.Теперь на сервере есть строки с идентификатором 0,1,2,1000,1001,1002.
  6. При добавлении строк клиента неявно переизбыток сервера до 1003.
  7. Строка добавлена ​​на серверкаким-то другим процессом.У него есть идентификатор 1003.
  8. Клиент повторно устанавливает сервер на 3 ... слишком поздно!

1 Ответ

0 голосов
/ 15 марта 2012

Мы пошли с отрицательными идентификаторами для клиентов, тем самым избежав повторного заполнения сервера: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...