我在应用程序中使用ESE(JetBlue),当调用JetAttachDatabase时,它返回JET_errDatabaseDirtyShutdown。我应该在我的应用程序中做什么?我希望删除任何未公开的交易
答案 0 :(得分:1)
日志恢复将通过调用JetInit自动完成,JetInit将自动回滚未注释的事务。为了让JetInit工作,它必须找到日志文件,所以在这种情况下你可能有:
答案 1 :(得分:0)
您可以将应用程序配置为自动尝试清除"脏关机"通过在JetCreateInstance()之后和JetInit()之前添加以下内容。是的,这些事情的顺序很重要:
Api.JetSetSystemParameter(instance, JET_SESID.Nil, Server2003Param.AlternateDatabaseRecoveryPath, 0, Path.GetDirectoryName(databasePath));
(上面的示例是在C#中,但你明白了......)
最后一个参数是您希望修复数据库出现的位置,因此很可能与脏数据库文件位于同一目录。