Microsoft 同期フレームワークを使用して、SQL Server 2008 R2 サーバーと多数の SQL Server CE クライアントの間でデータを同期する .NET アプリケーションがあります。
最初の同期はサーバー上のデータを正常にダウンロードしますが、同期ログは、ダウンロードが完了したばかりの変更されていないデータのアップロードを実行することを示しています。これにより、初期同期時間が大幅に延長されます。
以下の SQL CE ログから抽出します (これは、テーブルの 1 つの最初の同期です)。
***** Client Provider Commit Transaction ****
Connecting to database: Data\Database.sdf
**** Client Provider Begin Transaction ****
----- Client Applying Changes from Server for Group "Staff" -----
----- Applying Deletes for Table Staff-----
Deletes Applied: 0
--- End Applying Deletes for Table Staff-----
----- Applying Upserts for Table Staff-----
----- Applying Inserts for Table Staff-----
Inserts Applied: 1
----- Applying Updates for Table Staff-----
Updates Applied: 0
--- End Applying Upserts for Table Staff---
Staff: Set ReceivedAnchor value: 1832
--- End Client Applying Changes from Server for Group "Staff" ---
これは、変更がサーバーに誤ってアップロードされた場合のログです。つまり、何も変更されていないのに更新済みとしてフラグが立てられます。
SELECT ut.* FROM (select ut0.* from [Staff] as ut0 where (ut0.__sysTrackingContext <>
@CNTX OR ut0.__sysTrackingContext IS NULL) AND ut0.__sysChangeTxBsn >= @LBSN ) as ut
LEFT OUTER JOIN (select txcs0.* from __sysTxCommitSequence as txcs0) as txcsInsert ON
ut.__sysInsertTxBsn = txcsInsert.__sysTxBsn LEFT OUTER JOIN (select txcs0.* from
__sysTxCommitSequence as txcs0) as txcsUpdate ON ut.__sysChangeTxBsn = txcsUpdate.__sysTxBsn
WHERE COALESCE(txcsUpdate.__sysTxCsn, ut.__sysChangeTxBsn) > @LCSN AND COALESCE
(txcsUpdate.__sysTxCsn, ut.__sysChangeTxBsn) <= @ECSN AND (COALESCE(txcsInsert.__sysTxCsn,
ut.__sysInsertTxBsn) <= @LCSN OR COALESCE(txcsInsert.__sysTxCsn, ut.__sysInsertTxBsn) IS NULL
OR ut.__sysInsertTxBsn IN (SELECT SyncBsn FROM __syncTransactions))
Parameter: @LCSN Value: 0
Parameter: @LBSN Value: 0
Parameter: @ECSN Value: 408
Parameter: @CNTX Value: 73c9795b-29e5-49c3-8a66-f99f667225d5
Update for row with PK: StaffId = 1
サーバー側では、追跡の現在のバージョンは最初の同期中に問題なく、ダウンロードされたレコードが新しいとクライアントが考えているため、ある時点で増加します。
これを引き起こしている可能性があることの 1 つは、SyncScope をセットアップするためにトラッキングが無効になってから有効になっていることです。これは、最初の同期の後に行われます。
役立つ情報を十分に提供できたかどうかはわかりません。もっと提供して幸せです。
どんな助けでも大歓迎です。ありがとう。