JetRestore 函式
適用于: Windows |Windows Server
JetRestore 函式
JetRestore函式會還原和復原實例的串流備份,包括所有附加的資料庫。 此函式主要用於與 Windows 2000 和更早版本資料庫引擎的回溯相容性,其中只允許一個資料庫的實例。 在此情況下,使用中實例是還原的實例。 使用 JetRestore時,無法指定還原資料庫的位置。
JET_ERR JET_API JetRestore(
__in JET_PCSTR sz,
__in JET_PFNSTATUS pfn
);
參數
深圳
備份所在的資料夾。 應該已使用 JetBackup 函式產生備份。
pfn
函式的選擇性指標,該函式會呼叫為還原作業進度的通知資訊。
傳回值
此函式會傳回具有下列其中一個傳回碼 的 JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱 可延伸儲存引擎錯誤 和 錯誤處理參數。
傳回碼 |
Description |
---|---|
JET_errSuccess |
作業已成功完成。 |
JET_errAlreadyInitialized |
作業失敗,因為此實例的引擎已經初始化。 |
JET_errInvalidLogSequence |
來自備份組和目前記錄路徑的記錄檔集不相符。 |
JET_errInvalidParameter |
提供的其中一個參數包含非預期的值,或包含與另一個參數的值結合時沒有意義的值。 |
JET_errInvalidPath |
作業失敗,因為提供的某些路徑無效, (備份路徑、目的地路徑、實例的記錄檔或系統路徑) 。 |
JET_errPageSizeMismatch |
作業失敗,因為引擎設定為使用 JetSetSystemParameter 的資料庫頁面大小 (, JET_paramDatabasePageSize) 不符合 用來建立交易記錄檔的資料庫頁面大小,或是與交易記錄檔相關聯的資料庫。 |
JET_errRunningInMultiInstanceMode |
作業失敗,因為參數隱含單一實例模式 (Windows 2000 相容性模式) ,而且引擎已處於多重實例模式。 |
成功時,備份組中的資料庫檔案將會還原到其位置,並執行復原,讓資料庫處於全新的交易一致性狀態。 如果這類檔案存在,復原將會從備份組重新執行記錄檔,以及來自記錄路徑的記錄檔。 此復原會導致檢查點檔案、交易記錄檔,以及這些交易記錄檔所參考的任何資料庫變更。
失敗時,實例會維持未初始化的狀態。 嘗試初始化還原和復原資料庫時,交易記錄檔和這些交易記錄檔所參考的任何資料庫狀態可能已經變更。
備註
復原程式會在備份期間重新建構附加至實例的資料庫,並將變更儲存回資料庫檔案。 結果會是交易一致的資料庫。 可能的話,它也會儲存至資料庫,因為備份是在交易記錄中找到最新的變更之前完成的變更。 如果建立備份後產生的交易記錄仍存在於交易記錄目錄中,就可能發生這種情況。 請注意,如果實例已啟用迴圈記錄,則產生的交易記錄會重複使用,讓復原能夠儲存備份時間所發生的變更。 在任何情況下,如果要針對資料庫重新執行的交易記錄檔數目很大,此程式可能需要相當長的時間。
必須先在實例上呼叫JetRestore函式,才能針對該實例呼叫JetInit。
因為復原期間會使用大量的資料庫頁面和交易記錄,所以這些函式可能會傳回一系列錯誤。 這類錯誤可能是暫時性資源配置失敗,例如Jet_errOutOfMemory到代表實體損毀的錯誤,例如JET_errReadVerifyFailure、JET_errLogFileCorrupt或JET_errBadPageLink。 這些錯誤幾乎都是由硬體問題所造成,因此無法避免。 檔案管理錯誤最常顯示為JET_errMissingLogFile或JET_errAttachedDatabaseMismatch或JET_errDatabaseSharingViolation或JET_errInvalidLogSequence。 應用程式可避免這些錯誤。 應用程式必須小心保護這些檔案的存放庫,以防止外部強制操作,例如使用者或其他應用程式。 如果應用程式想要完全終結實例,則必須刪除與實例相關聯的所有檔案。 其中包括檢查點檔案、交易記錄檔,以及附加至 實例的任何資料庫檔案。
復原的不同步驟會產生事件記錄檔專案,包括交易記錄重新執行進度和還原的最終結果。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 |
Server |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
標頭 |
在 Esent.h 中宣告。 |
程式庫 |
使用 ESENT.lib。 |
Dll |
需要ESENT.dll。 |
Unicode |
實作為 JetRestoreW (Unicode) 和 JetRestoreA (ANSI) 。 |
另請參閱
JET_ERR
JET_GRBIT
JET_INSTANCE
JetBackup
JetBackupInstance
JetCreateInstance
JetSetSystemParameter