2010-11-27 70 views
3

我已經編寫了使用JetBeginExternalBackup API創建ESENT數據庫完整備份的代碼。恢復完整的外部ESENT備份

遵循MSDN指南,我備份了JetGetAttachInfo和JetGetLogInfo返回的每個文件。

我做了備份,刪除舊數據庫,並將備份數據複製到數據庫文件夾。 數據庫引擎無法啓動,JetInit錯誤代碼爲「JET_errMissingLogFile」。

我檢查了備份,它只包含數據庫文件,而「<inst> XXXXX.log」日誌文件。它缺少當前的日誌文件(我正在使用循環日誌記錄,順便說一句)。

有什麼辦法可以恢復這樣的備份嗎?

我不想使用JetExternalRestore API,因爲它太複雜了:我不需要恢復到另一個位置,我不明白爲什麼有3個輸入文件夾不是2,我不知道在genLow和genHigh參數中提供的值。

我確實需要外部備份:ESENT數據庫由遠程服務器上的ASP.NET使用,我通過Internet備份它。

或者,也許有辦法檢索當前日誌文件的名稱,我應該將其添加到備份?

在此先感謝!

P.S.我沒有權限跨越Web服務器上的進程,因此不能使用eseutil.exe。

回答

0

將所有備份的文件解包到一個文件夾中。

取主數據庫文件的名稱。將擴展名替換爲.pat。用該名稱創建零長度文件,例如database.pat

經過這個簡單的步驟,請致電JetRestoreInstance API,它將從該文件夾恢復備份。