我读取的文件的页面大小为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位。
答案 0 :(得分:0)
页面大小对于进程是全局的(不仅仅是实例)并且保存在日志文件和数据库中,因此更改页面大小可能会非常棘手。
您尝试访问的数据库中是否有信息?或者您是否只是在开发过程中遇到过这种情况?
如果你在开发过程中看到这一点,那么最简单的方法就是把所有东西都吹掉(del .edb edb )[假设你把前缀保留为“edb”]。
另外,你确定数据库是32k页吗?您可以使用esentutl.exe -mh <database-name>
确认。
如果您关心的话,恢复数据将会更加棘手,并且您切换了页面大小。 (我不知道我的头脑,我不得不尝试一些事情......)
-Martin