1

私はManagedEsentインターフェイスを使用していくつかのテストを行っていますが、ここの誰かがこれについて明確にできるかどうか疑問に思っています:

  • トランザクション内で更新(レコードの挿入)を行い、トランザクションをロールバックします

EseDatabaseViewを使用してデータベースを見ると、「コミットされていない」レコードがテーブルにリストされていることがわかります。esent.dllに再度アクセスしても、記録が得られません。

したがって、esent API を使用すると、レコードはコミットされません (そして表示されません)。EDVを使用すると(ファイルから直接読み取ると思います)、レコードがそこにあります。

これは「通常の」動作ですか、ESENTは「常に」ファイルにレコードを書き込みますか?コミットされていない場合、それは読み取られませんか? それを示すEDVのバグですか?それとも私はここで何かが欠けていますか?

4

2 に答える 2

0

ほとんどのデータベースと同様に、esent はトランザクションを使用しています。それらは、EDB ファイルと同じディレクトリにある LOG ファイルに保存されます。トランザクション ログ ファイル内のデータにアクセスする場合は、それらをデータベースにフラッシュする必要があります。これを行うには、次のコマンドを使用します: eseutil /MH database.edb

esent のトランザクション ログの詳細: http://support.microsoft.com/kb/240145/en-us

于 2014-11-26T17:59:05.470 に答える