我正在尝试使用 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 文件可能无效吗?