Использование MS Sync Framework для синхронизации двух баз данных SQL CE

Я просто работаю в Microsoft Sync Framework. Выглядит довольно легко синхронизировать локальную базу данных SQL CE 3.5 с удаленным SQL Server 2008 с помощью SqlSyncAdapterBuilder и SqlServerChangeTracking.

К сожалению, синхронизировать две базы данных SQL CE 3.5 не так-то просто ...
Документация очень скудная, и я действительно не знаю, с чего начать.

Мой конкретный сценарий выглядит следующим образом:

  • У меня один центральный SQL Server 2008.
  • К этому серверу подключено несколько клиентов (некоторые из них только частично).
  • Эти (частично подключенные) клиенты используют несколько приложений (возможно, работающих одновременно), работающих с одной и той же базой данных.

Синхронизация клиентов с центральным сервером не должна вызывать проблем. Синхронизация нескольких приложений на автономном клиенте - это то место, где я подумал об использовании нескольких баз данных SQL CE (одну в качестве сервера и одну для каждого экземпляра приложения). Я действительно ценю возможность использовать те же механизмы разрешения конфликтов при синхронизации клиентов с сервером, а также при синхронизации нескольких приложений на клиенте. Установка SQL Server 2008 Express на каждом клиенте - непростая задача.

Есть ли у кого-нибудь опыт синхронизации двух баз данных SQL CE?

Ответов (2)

Решение

Sync Framework 2.0 обеспечивает синхронизацию между базами данных SQL Server Compact Edition.

SqlCeSyncProvider используется для синхронизации баз данных SQL Server Compact.

Этот поставщик может использоваться для синхронизации с центральным сервером, но также имеет возможность синхронизации с другими клиентами, что невозможно с SqlCeClientSyncProvider. Эта возможность позволяет разработчикам ориентироваться на новые сценарии, такие как сценарий совместной работы, в котором группам людей необходимо синхронизировать друг с другом при отсутствии подключения к центральному серверу.

Для всех синхронизаций ado.net требуется поставщик клиента и поставщик сервера.

К сожалению, в текущей версии фреймворка нет SqlCe Server SyncProvider из коробки. Это означает, что вам нужно создать подкласс DBServerSyncProvider и обернуть SqlCe Client SyncProvider.

См. В этой статье пример того, как это сделать с помощью sql express.

Это та же концепция, только вы будете обертывать SqlCeClientProvider. Хорошая новость в том, что упаковка может быть проще.

Удачи!