gpt4 book ai didi

c# - 尝试使用 ManagedEsent 访问/附加 ESE 数据库时出现问题

转载 作者:搜寻专家 更新时间:2023-10-30 23:00:56 25 4
gpt4 key购买 nike

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

最佳答案

运行 EsentUtl 实用程序修复数据库文件后,我能够访问数据库:

esentutl /p Blah.edb

运行后,我可以附加/打开数据库并从数据库中的表中读取。我不确定修复实际上对文件做了什么(例如,如果它现在可能丢失了一些数据或其他东西)。

关于c# - 尝试使用 ManagedEsent 访问/附加 ESE 数据库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com