gpt4 book ai didi

c# - 如何使用可扩展存储引擎 API 附加 *.edb 数据库?

转载 作者:搜寻专家 更新时间:2023-10-30 23:20:03 24 4
gpt4 key购买 nike

我试图使用 Managed Esent API 附加到 Exchange Server 数据库文件,但我收到下一个错误:“数据库页面上的校验和错误”或 JET_errReadVerifyFailure 调用JetAttachDatabase。任何人都可以解释它是什么意思以及如何解决它吗?使用相同的 API 从 C++ 应用程序成功附加此数据库。

代码:

int pageSize;
Api.JetGetDatabaseFileInfo(fileName, out pageSize, JET_DbInfo.PageSize);

SystemParameters.DatabasePageSize = pageSize;

JET_INSTANCE jetInstance;
string jetInstanceName = Guid.NewGuid().ToString("N");
Api.JetCreateInstance(out jetInstance, jetInstanceName);

try
{
SetSystemParameters(jetInstance, fileName, jetInstanceName);

Api.JetInit(ref jetInstance);

JET_SESID jetSessionId;
Api.JetBeginSession(jetInstance, out jetSessionId, "admin", "password");

try
{
Api.JetAttachDatabase(jetSessionId, fileName, AttachDatabaseGrbit.ReadOnly);
}
finally
{
Api.JetEndSession(jetSessionId, EndSessionGrbit.None);
}
}
finally
{
Api.JetTerm(jetInstance);
}

SetSystemParameters 方法中,我只设置了 SystemPathTempPath 参数。可能我需要设置任何其他参数来解决我的问题?或者我的 esent.dll 的版本比需要的旧......现在我的 esent.dll 版本在 system32 文件夹中是 5.1.2600.5512.

谢谢。

最佳答案

我遇到了同样的问题。你猜对了,这是因为版本不同。如果您尝试使用 WinXP esent 引擎打开 Win7/Vista 制作的数据库,则会出现此错误。

不幸的是,没有办法修复它,只能升级您的 Windows。我的意思是合法的方式。因为如果你只是用更新的替换你的 esent.dll,它就会工作。但 Windows 许可证不允许这样做。

这是对这个问题的另一个讨论: ESENT distribution rights

关于c# - 如何使用可扩展存储引擎 API 附加 *.edb 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7690225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com