2016-08-11 18 views
0

現在、サーバーDB、および.net 3.5 WindowsベースのWPFアプリケーションで、さまざまな双方向同期dbs(Syncframework 2.1)でSQL Server CE 3.5を使用しています。しかし、アプリケーションのパフォーマンスが低下し、定期的に新しいローカルSDFを再生成する必要があります。そしてそのようにすれば、パフォーマンスが目に見える改善が見られ、60日後以降も同様のことが起こります。SQL Server CE 3.5パフォーマンスの問題

設定でトレースを有効にしたとき、以下の例外がトレースファイルに継続的に記録されていることがわかりました。私たちのコードでは、メソッド呼び出し 'SetTableSentAnchor'しか表示されません。その後、他のメソッドはどのように呼び出されますか?この例外はどのように処理できますか?

__sysTxCommitSequence:System.InvalidOperationException:保持クリーンアップシーケンスが無効です。指定された入力範囲については、トランザクションテーブルの履歴をクリーンアップする前に、トーンストーンテーブルをクリーンアップします。 System.Data.SqlServerCe.SqlCeChangeTracking.CheckIfDataIsPresentInTombstone(Int64のretentionValue、PurgeTypeパラメータ・タイプ)でSystem.Data.SqlServerCe.SqlCeChangeTracking.ProcessResultsで
(のInt32 HR)

System.Data.SqlServerCe.SqlCeChangeTracking.PurgeTransactionSequenceData(PurgeTypeパラメータ・タイプでMicrosoft.Synchronization.Data.SqlServerCe.SqlCeClientSyncProvider.SetTableSentAnchorで、Int64のretentionValue)
(文字列tableNameの、SyncAnchorアンカー)が

また、私たちは以下のように、60のように設定RetentionInDaysの設定を見てきました。これに影響はありますか?

[ConfigurationProperty("clientRetentionInDays", DefaultValue = 60, IsRequired = false)]** 

現在のところ、コードにパージ方法はありません。そこでSqlCeChangeTrackingクラスのPurgeTombstoneTableDataメソッドを使用して、システムテーブルのTombstonetableデータをクリーンアップしようとしました(_sysOCSDeletedRows)。ただし、例外が発生したため、失敗しました。

変更履歴の追跡操作はシステムテーブルでは許可されていません。 [テーブル名= __sysOCSDeletedRowsは]

上記に加えて、我々はまた、以下のコードと同様SqlSyncStoreMetadataCleanup.PerformCleanup方法を試みました。しかし、システムテーブルに変更トラッキング操作が許可されていないというエラーが表示されます。

https://msdn.microsoft.com/en-us/library/ee617373(v=SQL.110).aspx

SqlSyncStoreMetadataCleanup metadataCleanup = new SqlSyncStoreMetadataCleanup(serverConn); 
bool cleanupSuccessful; 
metadataCleanup.RetentionInDays = 7; 
cleanupSuccessful = metadataCleanup.PerformCleanup(); 

質問:

  • Tombstonetableエントリをクリーンアップしながら、どのように我々は、この例外を処理することができますか?

  • Tombstonetableが格納されている他のテーブルは何ですか?

  • 再生の60日後にSDFでこのパフォーマンスの問題を克服するにはどうすればよいですか?

  • その他のベストプラクティスにはどのようなものがありますか?

  • メタデータ(PerformCleanup)を正常にクリーンアップする方法と、クリーンアップ後に検証するテーブルについて教えてください。

ありがとうございます。

よろしく、 Sundar。

+0

正確なSQL CEのビルドバージョンを使用していますか? – ErikEJ

+0

ありがとうErikEJ、私たちはSQL CE 3.5 SP2を使用しています。製品バージョンは3.5.8080.0です。 – Sundar

+0

こんにちはErikEJ、あなたの入力を歓迎します。 – Sundar

答えて

0
  • SqlCeEnginesクリーンアップ、修復、またはコンパクトを使用しないでください。それはあなたのデータベースとあなたのデータベースのパフォーマンスを混乱させるでしょう。
  • 対象のオペレーティングシステムでのみデータベースを開くか生成します。 Windows CE上で生成されたWindows CE上のデータベースを開いた場合(ここでは別のCodepagesを取得しています)、ターゲットプラットフォームに変換する必要があります。これには時間がかかります。 Windows CEとWindows XPは、世代別のデータベースを簡単に開くことができる唯一のプラットフォームです。
  • そのようなことをすべて避けるためにSQLiteに切り替えることを検討してください。
関連する問題