JetAttachDatabase returns -1213

JetAttachDatabase returns -1213

我正在尝试读取一些现有的和未安装的 ESE 数据库文件。我一直在玩弄一个 .dat 文件,相当成功。但是,当我尝试打开 PageSize 等于 32768 的现有数据库时,出现错误。

这是我的代码(没有错误处理):

FError := JetSetSystemParameter(&FInstance, nil, JET_paramRecovery, FPagesize, "off");
FError := JetCreateInstance(&FInstance, 'myinstance');
FError := JetInit(&FInstance);
FError := JetBeginSession(FInstance, &FSessionId, nil, nil);
FError := JetAttachDatabase(FSessionId, FFilename, JET_bitDbReadOnly);

它在 JetAttachDatabase 调用失败,returns 一个 -1213 代码。我做错了什么吗?

我是运行一个Windows7 32bit.

Esent 引擎默认使用特定的页面大小。如果我没记错的话是4K。您必须告诉引擎您要打开的数据库具有不同的页面大小。使用类似的东西:

FError := JetSetSystemParameter(&FInstance, nil, JET_paramDatabasePageSize, 32768, nil);

如果您一直打开不同的数据库,您可能希望应用程序自动检出并设置页面大小。