#esent
Вопрос:
Когда приложение, использующее базу данных ESENT, выходит из строя, база данных помечается как загрязненная, поэтому при следующей попытке открыть она JetAttachDatabase
вернется JET_errDatabaseDirtyShutdown
.
К сожалению, похоже, что нет такой функции, как «JetRecoverDatabase», или флага, который я мог бы передать функциям инициализации или присоединения для автоматического восстановления. Есть JetRestore
, но для этого требуется позвонить JetBackup
в какой-то момент до сбоя приложения.
Потеря данных-это нормально для моего приложения, но было бы неплохо, если бы хотя бы некоторые из существующих данных можно было восстановить в случае сбоя (примечание: мое приложение не просто постоянно выходит из строя. В настоящее время я тестирую различные сбои, которые могут возникнуть). То, что я сейчас делаю, — это просто удаляю базу данных и воссоздаю ее заново, но опять же, восстановление некоторых данных предпочтительнее.
Есть несколько хороших примеров того, как использовать ESENT, поэтому это была крутая кривая обучения. Пара примеров кода, которые я нашел на GitHub для этой конкретной ошибки, просто говорят о запуске esentutl.exe
в базе данных. Хотя я полагаю, что мог бы выполнить программу, чтобы попытаться исправить это, я бы предпочел сделать это программно.