4

私はSyncFx v.2.1をアプリケーションで使用することができます。クライアント側は現在SQLCEを使用しており、サーバー側はServer 2008 r2を使用しています。私はSyncFxプロキシを使用しており、WCFサービスでサーバーのSyncAdapterBuilderコードをホストしています。クライアントにはSyncAgentとSyncTablesがあり、正常に動作します。私は、既存のスキーマを変更することが許可されていないため、結合された(別名カスタム/スコープの)チェンジトラッキングの代わりに統合SQLチェンジトラッキングを使用しています。Sync Framework v.2.1およびWCFプロキシを使用したN-TierのSQL Expressの変更追跡

私の問題は、システムの要件が変更され、ストアドプロシージャをサポートするためにクライアントでSQL Expressを使用する必要があることです。

なぜ複製をマージしないのですか?また、スキーマの変更やトリガーの使用も禁止されています。実際、元のバージョンのアプリケーションでは、SyncFx for SQLCEに移行する前に、SQLCEでレプリケーションをマージしていました。

これはどのように行われますか?私は多くの矛盾した情報を読んできましたが、これは進化し続けるSyncFxのバージョンに対応していると仮定することしかできません。両方のSQLでSQLとChange Trackingをどのように実現するかの直接的な例はありません。また、私は機能的なSQLCE実装からExpressへの移行を可能な限り少々変えようとしています。クライアントはすでにいずれかのタイプのDBを使用することができます。変更する必要のある現在の同期プロセスです。

これは私が見つけたものですが、成功しませんでした。私はこの問題に関するすべてのStackOverflowレスポンスを読んできましたが、実際にこれを行う方法を見つけることはまだありません。

  1. Database Sync:SQL Server and SQL Express N-Tier with WCF:このMSの例は、SyncOrchistratorでは問題ありませんが、サイドトラッキングテーブルとトリガーをプロビジョニングしています。クライアントとサーバーで変更トラッキングを使用できるようにこれを変更することはできませんでした。
  2. Sync framework with SQL Server 2008 Change Tracking:StephaneTは、SQL Expressサンプル同期プロバイダーとSyncFx 2.0テクニックで通常のSQLCEアプローチを使用するだけで、クライアントサイドテーブルの変更のみが必要であることを示唆しています。残念ながら、このサンプルSQL Expressプロバイダーへのリンクはすべて削除されているようです。JuneTの他の投稿やMSDNのLiam Cavanaghまで、DbServerProviderのカスタマイズ版ではなく新しい公式SqlServerProviderを使用することをお勧めします。問題はどこにでも実装されているサンプルがないことと、試行錯誤で解決できなかったことです。
  3. Syncing SQL Server 2008 Databases over HTTP using WCF & Sync Framework:Rajは、残念ながらインターネットから蒸発したように見えるSqlExpressClientSyncProviderを使用しています(SQLCEプロセスに簡単かつ簡単に変換される)。また、クライアントを追跡するにはアンカーテーブルが必要ですが、私は「既存の」テーブルのスキーマを変更することはできないので、これで取り除くことができます。

それで私が助けてくれる例があります。基本的には、既存のscheamaを変更せずに、またはトリガーを使用してSQL Expressで動作するバージョンに、SyncAgentを使用して、統合されたSQL Change Trackingを使用して、既存の機能するSQLCE SyncFxを移植します。また、レプリケーションには150以上のテーブルがあるため、フィルタパラメータを大量に使用しているため、フィルタなしでは非常に大きくなります。私はSqlExpressClientSyncProviderがフィルタをサポートしていないと言った参考文献を読んだことがありますが、それでもまだ良いコードへの参照を見つけることができないので、これを検証することは不可能です。

はたぶん正しい方向に私を指すことができます誰にも事前にSqlServerSyncProvider

感謝を使用していますラジの例のリフレッシュがあります!

答えて

2

チェックアウトこのリンクを、あなたはまだコメントエリア作業中ダウンロードリンクをいくつか見つけるかもしれない:でもサンプルSqlExpressClientSyncProviderは墓石テーブルの削除を追跡するためのトリガを使用していることをhttp://www.8bit.rs/blog/2009/05/debugging-sql-express-client-sync-provider/

テイクノートを。同様に、行が挿入または更新された日時(日時またはタイムスタンプ列)を追跡するために、テーブルに列を持つ必要があります。

フィルタリングに関して、フィルタ句を含むようにアダプタのクエリを簡単に変更できます。

最新のSqlSyncProviderは、独自の追跡メカニズムを実装しているため、SQL変更追跡をサポートしていません。新しいプロバイダはピアツーピアシナリオで動作し、特定の変更がどのレプリカから得られたものかを追跡します。

+1

提供されたリンクにソースが表示されています。私はこれに最善の答えとしてサインする前に、このいくつかを試してみましょう。基本的に答えが「いいえ、ExpressFlashでExpressクライアントで変更トラッキングを使用することはできませんが、サポートされていません」ということに驚いています。すべてのテーブルには、CRUDトラッキングに使用できる列があります。 – opherko

+0

アンカーテーブルとGUIDテーブルのスキーマへの参照はどこにありますか?私は、アンカーがTableName列を持っている必要があり、guidはクラスメソッドごとにSentAnchor列を持つ必要がありますが、私は確かに他の列が必要であると確信しています。興味深いことに、カスタムテーブルを使用して方向とフィルタ情報を取得するようにAdapterBuilderを構築しましたが、おそらくこれらのテーブルについてもう少し分かっていれば、両方とも単一のテーブルで行うことができます。また、SqlExpressClientSyncProviderは、初期化時にクライアント上にスキーマを作成しないように見えます。サンプルはCreateSchemaを実装しません。 – opherko

+0

サンプルSqlExpressClientSyncProviderには、アンカーテーブルとトムソンテーブルを作成するスクリプトがあります。はい、同期のために自動的にデータベースオブジェクトをプロビジョニングしません。アンカーテーブルは、少なくともテーブル名、送信されたアンカーおよび受信アンカーを有するべきである。削除テーブルには、削除された行のpkと、アンカーと比較できるように削除された日時を示すdatetimeまたはtimestampが必要です。 – JuneT

関連する問題