我正在尝试通过 esent.dll 读取未安装的 EDB 文件。一切都适用于 4k 分页数据库,但是当我尝试读取 8k 分页数据库时,它返回错误 1414 -> 二级索引已损坏,必须对数据库进行碎片整理。但是使用 eseutil 进行碎片整理并不能解决问题。(eseutil 来自创建 .edb 的同一交换服务器的 bin 文件夹)
JET_ERR err;
JET_INSTANCE instance;
JET_SESID sesid;
JET_DBID dbid;
JET_TABLEID tableid;
JET_COLUMNDEF columndef = { 0 };
JET_COLUMNID columnid;
Call(JetSetSystemParameter(&instance, JET_sesidNil, 64, 8192, NULL)); //JET_paramDatabasePageSize - 64
Call(JetSetSystemParameter(&instance, JET_sesidNil, 34, 0, NULL)); //JET_paramRecovery - 34
//Call(JetSetSystemParameter(&instance, JET_sesidNil, JET_paramCircularLog, 1, NULL));
Call(JetCreateInstance(&instance, "instance"));
Call(JetInit(&instance));
Call(JetBeginSession(instance, &sesid, 0, 0));
JET_PCSTR FileName = "C:\\Users\\user\\Desktop\\EDB\\First Storage Group\\Mailbox Database.edb";
Call(JetAttachDatabase(sesid, FileName, 0));`
而且它不会附加数据库。在您看来,这似乎是什么问题?