1

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

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

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);

它在返回 -1213 代码的JetAttachDatabase调用中失败。难道我做错了什么?

我正在运行 Windows 7 32 位。

4

1 回答 1

2

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

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

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

于 2015-02-11T07:11:36.473 回答