Я пытался присоединиться к файлу базы данных Exchange Server с помощью Управляемый Esent API , но я получил следующую ошибку: «Ошибка контрольной суммы на странице базы данных» или JET_errReadVerifyFailure
при вызове JetAttachDatabase . Кто-нибудь может объяснить, что это значит и как это исправить? Эта база данных была успешно присоединена из приложения C ++ с использованием того же API.
Код:
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
я устанавливаю только параметры SystemPath
и TempPath
. Может быть, мне нужно установить дополнительные параметры, чтобы исправить мою проблему? Или версия моего esent.dll
старше, чем нужно ... Теперь моя версия esent.dll
, которая в папке system32
, 5.1.2600.5512
.
Спасибо.