我正在尝试阅读一些现有的和未安装的esent数据库文件(如Windows.edb)。我一直在玩一些edb文件而不是成功。但是当我尝试使用不等于8192的PageSize打开数据库时,我收到错误。
这是我的代码(没有错误处理):
FError:= JetSetSystemParameter(@FInstance,nil,JET_paramDatabasePageSize,FPagesize,nil);
FError:= JetCreateInstance(@FInstance,'EDBInstance');
FError:= JetInit(@FInstance);
FError:= JetBeginSession(FInstance,@ FSessionId,nil,nil);
FError:= JetAttachDatabase(FSessionId,FFilename,JET_bitDbReadOnly);
只要FPageSize = 8192就可以正常工作。任何其他值(4096,32768)在JetInit调用时失败,返回-1213代码。如果我没有为数据库设置正确的PageSize值,我在JetAttachDatabase上会得到相同的错误,我可以理解。但JetInit返回的第一个错误我无法理解。 我做错了什么?我希望Laurion Burchall正在读这篇文章! : - )
我正在运行Windows 7 64位。
答案 0 :(得分:2)
有两种可能性:
如果要以只读方式打开现有数据库,则应关闭恢复(将JET_paramRecovery设置为“off”)。这将阻止生成任何日志文件,这将避免很多问题。