ManagedEsent ライブラリを使用して ESE データベース (.edb) を読み込もうとしています。ただし、データベースのセットアップ時にエラーが発生します。エラーは、データベースの接続時 (JetAttachDatabase() の呼び出し時) に発生しているようです。
表示されるエラー メッセージは、「ソフト リカバリはバックアップ データベースを対象としています。代わりに復元を使用する必要があります」です。
以下は私のコードです:
JET_INSTANCE instance;
JET_SESID sesid;
Microsoft.Isam.Esent.Interop.SystemParameters.DatabasePageSize = 8 * 1024;
Api.JetCreateInstance(out instance, Guid.NewGuid().ToString());
Api.JetInit(ref instance);
JET_DBID dbid;
JET_COLUMNID columnid;
JET_TABLEID tableid;
JET_COLUMNDEF columndef = new JET_COLUMNDEF();
Api.JetBeginSession(instance, out sesid, null, null);
Api.JetAttachDatabase(sesid, @"Blah.edb", AttachDatabaseGrbit.None);
Api.OpenDatabase(sesid, @"Blah.edb", out dbid, OpenDatabaseGrbit.None);
私が得ている例外は次のとおりです。
Microsoft.Isam.Esent.Interop.EsentSoftRecoveryOnBackupDatabase
Soft recovery is intended on a backup database. Restore should be used instead
at Microsoft.Isam.Esent.Interop.Api.Check(Int32 err) in e:\src\codeplex_svn\codeplex\EsentInterop\Api.cs:line 2894
at Microsoft.Isam.Esent.Interop.Api.JetAttachDatabase(JET_SESID sesid, String database, AttachDatabaseGrbit grbit) in e:\src\codeplex_svn\codeplex\EsentInterop\Api.cs:line 372
これを引き起こしている可能性のあるアイデアはありますか?添付している .edb ファイルは無効である可能性がありますか?