Восстановить полную внешнюю резервную копию ESENT
Я написал код, который создает полные резервные копии моей базы данных ESENT, используя API JetBeginExternalBackup.
Следуя указаниям MSDN, я создал резервную копию каждого файла, возвращенного JetGetAttachInfo и JetGetLogInfo.
Я сделал резервную копию, стер старую базу данных и скопировал данные резервной копии в папку базы данных. Движок БД не смог запуститься, код ошибки JetInit - "JET_errMissingLogFile".
Я проверил резервную копию, она содержит только файл базы данных и файлы журнала "
Есть ли способ восстановить такую резервную копию?
Я не хочу использовать JetExternalRestore API, потому что он слишком сложный: мне не нужно восстанавливать в другое место, я не понимаю, почему есть 3 входных папки, а не 2, и я не знаю значений для предоставления в аргументах genLow и genHigh.
Мне нужны внешние резервные копии: база данных ESENT используется ASP.NET на удаленном сервере, и я создаю резервную копию через Интернет.
Или, может быть, есть способ получить имя текущего файла журнала, и я должен просто добавить его в резервную копию?
Заранее спасибо!
PS У меня нет прав для охвата процессов на моем веб-сервере, поэтому использование eseutil.exe не вариант.
1 ответ
Распакуйте все резервные копии в одну папку.
Возьмите имя вашего основного файла базы данных. Заменить расширение на .pat
, Создать файл нулевой длины с таким именем, например database.pat
,
После этого простого шага вызовите API JetRestoreInstance, он восстановит резервную копию из этой папки.