Нужно ли Microsoft Sync загружать всю таблицу с обеих сторон для сравнения?

Я не уверен, что хорошо понимаю сценарии для Microsoft Sync Framework. У меня есть огромная БД с тысячами строк, идентичных на двух удаленных SQL-серверах.

Когда я синхронизирую, похоже, что он извлекает ВСЕ данные для сравнения. Что насчет последующих обновлений?

Спасибо Джон


person user96547    schedule 03.05.2012    source источник


Ответы (1)


процесс синхронизации должен извлекать только добавочные обновления, то есть он должен получать только вставки/обновления/удаления, произошедшие с момента последней синхронизации.

вы пытаетесь синхронизировать в первый раз две базы данных с одинаковыми строками?

если две базы данных имеют идентичные строки, существующие к моменту подготовки баз данных для синхронизации, Sync Framework не знает, что эти существующие строки являются одними и теми же. поэтому он отправит эти же строки в другую базу данных. приложение изменения завершится ошибкой в ​​месте назначения, поскольку строки уже существуют, и это приведет к возникновению конфликтов.

person JuneT    schedule 03.05.2012
comment
Спасибо за разъяснения. Таким образом, это означает, что в первый раз это займет много времени ... Нет никакого способа начать с того, чтобы сообщить Sync, что 2DB идентичны? - person user96547; 03.05.2012
comment
к сожалению, я ничего не знаю... когда вы подготавливаете базу данных, сведения о синхронизации пусты (они еще не синхронизированы)... если две БД абсолютно идентичны, подготовьте одну БД, создайте резервную копию, восстановите БД на другом сервере и сделать PerformPostRestoreFixup... - person JuneT; 04.05.2012
comment
Это важно знать ... я попробую ваш совет. Таким образом, нет возможности сериализовать эту информацию на случай, если программа будет перезапущена между синхронизацией... - person user96547; 04.05.2012
comment
манипулирование знаниями синхронизации немного сложно. в вашем сообществе синхронизации каждая копия/реплика идентифицируется идентификатором реплики. а информация о синхронизации хранит то, что она получила от каждой реплики. при начальной синхронизации эти знания, конечно, пусты, потому что они еще не синхронизированы, а знания синхронизации создаются только после первой синхронизации. PerformPostRestoreFixup — это самый быстрый обходной путь без необходимости самостоятельно вникать в манипуляции с информацией о синхронизации. - person JuneT; 04.05.2012