2012-01-03 17 views
1

私は、SyncFrameworkを使用して、ハブアンドスポークアーキテクチャのウェアハウジングアプリケーションでデータの統合を調整するクライアントを作成しました。 同期トランザクションが処理すると、同期フレームワークは、最後の同期が処理され、サーバーにアップロードされた日時を示す値@@ DBTSで指定されたアンカーテーブルを更新します。 このシナリオの一部として、あるクライアントが他のクライアントに代わってデータを中継する機能を提供したいと考えています。@@ DBTSとBInaryFormatter

これは、1人のクライアントが倉庫に連絡できない場合に使用されます。そのデータベースは、ウェアハウスへのアクセス権を持つクライアント(DVDまたはUSBフラッシュメディアのデータベースバックアップとして交換)によって取得および同期化されます。

この理論の問題点は、スナップショットが取得されたときにクライアントデータベースにSentAnchorが設定されていないと、次回このプロセスが実行されたときにデータベース全体が再度複製されることです。

私は、クライアントのデータベースのスナップショットをつかむとき、それは実際に通信していたかのように私はSync Frameworkのコピーをつかむ次回はそのSentAnchor を知っているので、そのSentAnchorを更新している私は何をしたい、

サーバ。

最初のインパルスは単にアンカーテーブルを更新し、SentAnchorを@@ DBTSに設定することでしたが、その問題は同期フレームワークが同じ値を別の形式で挿入することで、まずBinaryFormatterで実行されます。

同じ固有値、異なるヘッダー、@@ DBTSの値で更新しようとすると、SyncFrameworkエラーは、それを設定していると予想される形式から変換しようとしています。

私がしたいのは、同期フレームワークが使用する@@ DBTSと同じフォーマットのTSQLステートメントで設定します。私は、バックアップを作成するために既に実行されているステートメントでこれを実行できる場合、単一のSQLステートメントを実行するアプリケーションを作成する必要はありません。

のような何かが...

USE MyDB 
GO 
BACKUP DATABASE MyDb 
TO DISK = 'F:\01032012MyDb.bak' 
    WITH FORMAT,  
    NAME = '20120103 Full Backup of MyDb' 
GO 
UPDATE Anchor SET SentAnchor = @@DBTS 
GO 

は基本的にSyncFrameworkが使用する正しいfromatに同じ値を取得するために必要なものは何でもして上記@@ DBTSを交換します。

サーバーは2008R2 Expressです。

答えて

3

SentAnchorを設定する際の問題は、実際に変更のアップロードが失敗する可能性があることです。値を設定することによって、Sync Frameworkに、@@ DBTSの値まで変更を送信したことを効果的に伝えました。

代わりにSqlSyncProviderを使用して探索することをお勧めします。

+0

はい、バックアップ後にパージに関して最近投稿したその他の質問とほぼ同じです。バックアップと設定の間で変更が発生している可能性があります。 問題は、このシステムがオフライン同期用に設計されておらず、オンラインで動作する安定したシステムを強化することなく、それを実現する方法をリバースエンジニアリングしようとしていることです。 私はプロジェクト全体を再考していますが、将来の懸念がこれに関連している場合は投稿します。コメントをいただき、ありがとうございます。 – Sabre

関連する問題