2010-02-26 62 views

回答

0

通過對JetInit的調用會自動完成日誌恢復,JetInit會自動回滾未處理的事務。爲了使JetInit能夠正常工作,必須找到日誌文件,因此在這種情況下,您可能有:

  1. 刪除日誌文件。不要這樣做。
  2. 未正確設置日誌文件路徑。初始化時始終設置相同的日誌文件路徑,以便ESE可以找到日誌。
  3. 移動數據庫。日誌包含數據庫的硬編碼路徑,因此移動數據庫會中斷恢復。要處理這個問題,您可以將備用恢復路徑系統參數設置爲包含數據庫的目錄。
+0

但是,如果日誌文件不存在會發生什麼?我不知何故在代碼中需要恢復數據庫,就好像我會運行「esentutl/p ....」一樣? – 2016-11-07 16:29:37

0

您可以將應用程序配置爲在JetCreateInstance()和JetInit()之前添加以下內容來自動嘗試清除「髒關機」。是這些東西的順序很重要:

Api.JetSetSystemParameter(instance, JET_SESID.Nil, Server2003Param.AlternateDatabaseRecoveryPath, 0, Path.GetDirectoryName(databasePath)); 

(上面的例子是在C#中,但你明白了吧...)

最後一個參數是你想修復的數據庫的位置出現,所以最有可能是與髒數據庫文件相同的目錄。

相關問題