7

私は、Microsoft Sync Framework に取り組んでいます。SqlSyncAdapterBuilder と SqlServerChangeTracking を使用して、ローカルの SQL CE 3.5 データベースをリモートの SQL Server 2008 と同期するのは非常に簡単に見えます。

残念ながら、2 つの SQL CE 3.5 データベースを同期するのはそれほど簡単ではないようです...
ドキュメントは非常にまばらで、ここから始める方法がよくわかりません。

私の具体的なシナリオは次のようになります。

  • 中央の SQL Server 2008 が 1 つあります。
  • 複数のクライアントがこのサーバーに接続されています (一部のクライアントは部分的にしか接続されていません)。
  • これらの (部分的に接続された) クライアントは、同じデータベースで動作する複数のアプリケーション (おそらく同時に実行されている) を使用しています。

クライアントを中央サーバーと同期することは問題ありません。複数の SQL CE データベース (1 つはサーバーとして、もう 1 つはアプリケーション インスタンスごとに 1 つ) を使用することを考えたのは、オフライン クライアントで複数のアプリケーションを同期することです。クライアントをサーバーと同期するとき、およびクライアント上の複数のアプリケーションを同期するときに、同じ競合解決メカニズムを使用できることを本当に感謝しています。すべてのクライアントに SQL Server 2008 Express をインストールすることはできません。

2 つの SQL CE データベースを同期した経験のある人はいますか?

4

2 に答える 2

5

Sync Framework 2.0により、SQL Server Compact Edition データベース間の同期が可能になります。

SqlCeSyncProvider は、SQL Server Compact データベースを同期するために使用されます。

このプロバイダーは、中央サーバーとの同期に使用できますが、SqlCeClientSyncProvider では不可能な他のクライアントとの同期も可能です。この機能により、開発者は、中央サーバーへの接続がない場合に人々のチームが互いに同期する必要があるコラボレーション シナリオなど、新しいシナリオをターゲットにすることができます。

于 2009-10-31T20:56:34.760 に答える
1

すべての ado.net 同期には、クライアント プロバイダーとサーバー プロバイダーが必要です。

悲しいことに、フレームワークの現在のバージョンをそのまま使用できる SqlCe Server SyncProvider はありません。つまり、DBServerSyncProvider をサブクラス化し、SqlCe Client SyncProvider をラップする必要があります。

SQL Express でそれを行う方法の例については、この記事を参照してください。

SqlCeClientProvider をラップするだけで、同じ概念です。良いニュースは、ラッピングがより簡単になる可能性があることです。

幸運を!

于 2009-03-03T15:32:17.773 に答える