Восстановление полной внешней резервной копии ESENT - PullRequest
3 голосов
/ 27 ноября 2010

Я написал код, который создает полные резервные копии моей базы данных ESENT с использованием JetBeginExternalBackup API.

Следуя указаниям MSDN, я создавал резервные копии всех файлов, возвращаемых JetGetAttachInfo и JetGetLogInfo.

Я сделал резервную копию, стер старую базу данных и скопировал данные резервной копии в папку базы данных. Движок БД не смог запуститься, код ошибки JetInit - «JET_errMissingLogFile».

Я проверил резервную копию, она содержит только файл базы данных и файлы журнала " XXXXX.log". В нем отсутствует текущий файл журнала (я использую циклическое ведение журнала, кстати).

Есть ли способ восстановить такую ​​резервную копию?

Я не хочу использовать API JetExternalRestore, потому что он слишком сложный: мне не нужно восстанавливать в другое место, я не понимаю, почему есть 3 папки ввода, а не 2 значения для предоставления в аргументах genLow и genHigh.

Мне нужны внешние резервные копии: база данных ESENT используется ASP.NET на удаленном сервере, и я выполняю резервное копирование через Интернет.

Или, может быть, есть способ получить имя текущего файла журнала, и я должен просто добавить его в резервную копию?

Заранее спасибо!

P.S. У меня нет прав для охвата процессов на моем веб-сервере, поэтому использование eseutil.exe не вариант.

1 Ответ

0 голосов
/ 21 мая 2016

Распакуйте все резервные копии в одну папку.

Возьмите имя вашего основного файла базы данных.Заменить расширение на .pat.Создайте файл нулевой длины с таким именем, например database.pat.

. После этого простого шага вызовите JetRestoreInstance API, он восстановит резервную копию из этой папки.

...