当使用 ESENT 数据库的应用程序崩溃时,数据库会被标记为脏,因此下次您尝试打开它时JetAttachDatabase
会返回JET_errDatabaseDirtyShutdown
.
不幸的是,似乎没有像“JetRecoverDatabase”这样的函数或我可以传递给 init 或附加函数以尝试自动恢复的标志。但这JetRestore
需要JetBackup
在应用程序崩溃之前的某个时间点调用。
数据丢失对我的应用程序来说是可以的,但是如果发生崩溃时至少可以恢复一些现有数据,那就太好了(旁注:我的应用程序不会一直崩溃。我目前正在测试各种故障可能发生)。我现在所做的只是删除数据库并重新创建它,但同样,最好恢复一些数据。
关于如何使用 ESENT 的好例子很少,所以它是一个陡峭的学习曲线。我在 GitHub 上为这个特定错误找到的几个代码示例只是说要esentutl.exe
在数据库上运行。虽然我想我可以执行程序来尝试修复它,但我更愿意以编程方式进行。