0

デバイスがクレードルにドッキングされているときに、USB経由でMicrosoft SyncFramework2.1を使用してSQLServer2008と同期するSQLCE3.5 SP 2データベースを使用する堅牢なデバイスアプリケーション(.NET CF)があります。

最近、デバイスアプリケーションでSDFによるデータベースの破損が発生しているため、起動時にSqlCeEngineのVerify、Repair、およびCompactメソッドを使用するメンテナンスコードを実装しました。基本的に、アプリはverifyメソッドを使用してSDFをチェックし、修復(または失敗)してから、アプリケーションを起動する前に圧縮します。

それ以来、すべてがかなりうまく機能しているので、MicrosoftからのこのKB記事を見つけたとき、デバイスが同期されるたびに同じルーチンを実行するコードを実装しました。

中央データベースサーバーに同期されているSQLServerCompact 3.5クライアントデータベースに対してSqlCeEngine.Compactメソッドを実行した後、クライアントデータベースへの一部の変更がアップロードされない場合があります-http : //support.microsoft.com/kb/967502#に適用されます

この記事はかなりあいまいで、これが発生する理由、またはSQL CE 3.5 SP 2で修正されているかどうかについての情報は提供されていません。この問題が発生する理由について、もう少し情報を提供できますか?

また、回避策として提案されている記事では、代わりにShrinkメソッドを使用することですが、それらが(本質的に)同じ機能を実行することを考えると、なぜShrinkを使用できるが、Compactは使用できないのでしょうか。

この記事では、SyncFramework2.1ではなくMicrosoftSynchronizationServices for ADO.NETについて言及していることを理解していますが、この問題が自分の状況に当てはまるかどうかを確認したかっただけです。私の理解では、Sync Services forADO.NETはSyncFrameworkの上に構築されており、WCFサービスを使用した同期が可能です。

クライアントとサーバーの両方で変更を加え(双方向同期)、SDFを圧縮してからサーバーと同期するテストを実行しましたが、すべてが正しく同期しているように見えますが、確認したいと思います。

誰かがこれに関するいくつかの情報を提供することができれば、それは非常にありがたいです。

4

1 に答える 1

2

Compact() メソッドは新しいデータベースを作成し、同期アンカーが実際にリセットされることがあります

参照: http://support.microsoft.com/kb/969858

Windows Mobile デバイスで使用している場合は、使用している ADO.NET (デバイス) のサービスの同期です。

于 2013-03-13T11:56:10.947 に答える