Как подключить базу данных * .edb с помощью API Extensible Storage Engine? - PullRequest
1 голос
/ 07 октября 2011

Я пытался присоединиться к файлу базы данных 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.

Спасибо.

1 Ответ

2 голосов
/ 16 октября 2011

Я сталкивался с той же проблемой.И ваше предположение верно, это потому, что разница в версии.Вы получите эту ошибку, если попытаетесь открыть базу данных, созданную Win7 / Vista, с помощью механизма WinXP esent.

К сожалению, нет способа исправить это, а не обновить вашу Windows.Я имею в виду законный путь.Потому что, если вы просто замените свой esent.dll на новый, он будет работать.Но это не разрешено лицензией Windows.

Вот еще одно обсуждение проблемы: Права на распространение ESENT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...