ESENT - 读取一个ese数据库文件

时间:2013-07-11 04:02:23

标签: esent

我读取的文件的页面大小为32768.当我将JET_paramDatabasePageSize设置为32768时,JetInit返回-1213。然后,我将JET_paramRecovery设置为“Off”,JetInit成功。但是,当我使用JetAttachDatabase时,它返回 - 550。

这是我的代码:

err=JetSetSystemParameter(&instance,sesid,JET_paramDatabasePageSize ,32768 ,NULL);  
err=JetCreateInstance(&instance,NULL);
err=JetSetSystemParameter(&instance,sesid,JET_paramRecovery,0,"Off");
err=JetInit(&instance);
err=JetBeginSession(instance,&sesid,NULL,NULL);
err=JetAttachDatabase(sesid,buffer, JET_bitDbReadOnly );
err=JetOpenDatabase  ( sesid, buffer, NULL, &dbid, JET_bitDbReadOnly );

它出了什么问题?我正在运行Windows 7 32位。

1 个答案:

答案 0 :(得分:0)

页面大小对于进程是全局的(不仅仅是实例)并且保存在日志文件和数据库中,因此更改页面大小可能会非常棘手。

您尝试访问的数据库中是否有信息?或者您是否只是在开发过程中遇到过这种情况?

如果你在开发过程中看到这一点,那么最简单的方法就是把所有东西都吹掉(del .edb edb )[假设你把前缀保留为“edb”]。

另外,你确定数据库是32k页吗?您可以使用esentutl.exe -mh <database-name>确认。

如果您关心的话,恢复数据将会更加棘手,并且您切换了页面大小。 (我不知道我的头脑,我不得不尝试一些事情......)

-Martin