JetBeginExternalBackup 函式
適用于: Windows |Windows Server
JetBeginExternalBackup 函式
JetBeginExternalBackup函式會在引擎和資料庫上線且作用中時起始外部備份。 JetBeginExternalBackup 是一系列函式中的第一個,必須呼叫以執行成功的線上 (非 VSS 型) 備份。
外部備份可用來實作完整、累加或差異備份。
備份會模糊,因此備份會與交易歷程記錄中的單一時間點一致,但無法控制確切的時間點。
JET_ERR JET_API JetBeginExternalBackup(
__in JET_GRBIT grbit
);
參數
grbit
指定下列零個或多個選項的位群組。
值 |
意義 |
---|---|
JET_bitBackupAtomic |
此旗標已被取代。 使用此位會導致傳回JET_errInvalidgrbit。 |
JET_bitBackupIncremental |
建立增量備份,而不是完整備份。 這表示只會備份上次完整或增量備份後的記錄檔。 |
JET_bitBackupSnapshot |
保留供未來使用。 針對 Windows XP 定義。 |
傳回值
此函式會傳回具有下列其中一個傳回碼 的JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱 可延伸的儲存引擎錯誤 和 錯誤處理參數。
傳回碼 |
Description |
---|---|
JET_errSuccess |
作業已成功完成。 |
JET_errBackupInProgress |
如果外部備份或快照集備份已在處理中,則會傳回此錯誤,直到呼叫 JetBeginExternalBackup (或其中一個變數) 為止。 ESE 一次只允許一個線上備份。 |
JET_errBackupNotAllowedYet |
實例或資料庫引擎處於復原或關閉或終止階段。 |
JET_errCheckpointCorrupt |
在完整備份上,無法讀取檢查點檔案,或無法驗證檔案。 |
JET_errCheckpointFileNotFound |
在完整備份上,找不到檢查點檔案。 |
JET_errClientRequestToStopJetService |
作業無法完成,因為與會話相關聯的實例上的所有活動都因為對 JetStopService的呼叫而停止。 |
JET_errInstanceUnavailable |
作業無法完成,因為與會話相關聯的實例發生嚴重錯誤,需要撤銷所有資料的存取權,以保護該資料的完整性。 Windowsxp: 此傳回值會在 Windows XP 中引進。 |
JET_errInvalidBackup |
會啟用迴圈記錄,而且指定的備份類型JET_bitBackupIncremental。 如需如何控制迴圈或非迴圈記錄的資訊,請參閱交易記錄錯誤中的JET_paramCircularLog。 |
JET_errInvalidgrbit |
一或多個 grbit 成員無效。 |
JET_errLoggingDisabled |
復原或記錄已停用。 如果記錄已停用,就無法進行線上備份。 如需記錄和復原的詳細資訊,請參閱 JET_paramRecovery。 |
JET_errLogWriteFail |
引擎已停止寫入記錄磁片磁碟機,因為記錄已滿或磁片 IO 錯誤。 |
JET_errMissingFullBackup |
累加備份是使用 JET_bitBackupIncremental) 指定 (,而且從未針對記錄集的其中一個附加資料庫進行完整備份。 |
JET_errNotInitialized |
作業無法完成,因為與會話相關聯的實例尚未初始化。 |
JET_errOutOfMemory |
作業失敗,因為無法配置足夠的記憶體來完成作業。 |
JET_errRestoreInProgress |
作業無法完成,因為與會話相關聯的實例上正在進行還原作業。 |
JET_errRunningInMultiInstanceMode |
作業失敗,因為嘗試在舊版模式中使用引擎, (Windows 2000 相容性模式) 實際上只有一個實例存在時才支援。 |
JET_errTermInProgress |
作業無法完成,因為與會話相關聯的實例正在關閉。 |
如果函式成功,則會起始外部備份,並初始化備份狀態引擎。 現在可以呼叫後續 API 來完成外部備份順序和串流或讀取資料庫檔案、如果支援) 和記錄檔,資料庫修補檔 (。 可以記錄外部備份已開始的事件。
如果函式失敗,將不會起始備份會話。 如果另一個備份會話正在進行中,將不會取消。
備註
JetBeginExternalBackup) 所啟動的外部備份 (程式是設計成允許整個實例的模糊交易線上備份到目標裝置做為資料流程。 備份會包含所有使用 JetAttachDatabase 附加至實例的資料庫檔案, (進行完整備份) ,後面接著其相關聯的資料庫修補程式檔案, (如果支援) ,最後是備份程式期間產生的交易記錄檔。 最終結果會是一組可從資料流程還原的檔案,可能結合現有的資料庫和記錄檔,最後復原到一致的狀態。
完整備份的一般作業順序包含下列呼叫。 首先,會呼叫 JetBeginExternalBackup 來啟動備份程式。 然後,會呼叫 JetGetAttachInfo ,以取得附加至需要備份之實例的資料庫清單。 針對每個資料庫,會呼叫 JetOpenFile ,後面接著一些 JetReadFile 呼叫,然後呼叫 JetCloseFile。 然後,會呼叫 JetGetLogInfo 來取得要備份的資料庫修補程式和記錄檔清單。 針對上述每個檔案,會進行另一個 JetOpenFile、 JetReadFile和 JetCloseFile 呼叫。 然後,使用 JetTruncateLog刪除任何不想要的交易記錄檔。 最後,備份會由 JetEndExternalBackup的通話結束。
您也可以修改這組步驟,以執行實例的累加備份。 累加備份會列舉並備份記錄檔。 只有在未啟用迴圈記錄時,才能進行增量備份。
您也可以修改這組步驟,以允許執行實例的後續差異備份。 若要執行差異備份,請勿在先前的完整或增量備份中呼叫 JetTruncateLog 。 藉由不呼叫 JetTruncateLog,您可以啟用後續備份與最後一次完整或增量備份的差異。 只有在未啟用迴圈記錄時,才能進行差異備份。
資料庫修補程式檔案是特殊的輔助檔案,可用來在備份期間儲存資料庫頁面映射。 在還原作業期間,此檔案必須存在於與其相關聯資料庫相同的位置。 此檔案僅適用于 Windows 2000。 因此,任何寫入以針對 Windows 2000 和其他版本運作的應用程式都必須支援資料庫修補程式檔案,如果有的話,但若不存在,也不得失敗。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 |
Server |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
標頭 |
在 Esent.h 中宣告。 |
程式庫 |
使用 ESENT.lib。 |
Dll |
需要ESENT.dll。 |
另請參閱
JET_ERR
JET_GRBIT
JET_INSTANCE
JetAttachDatabase
JetBeginExternalBackupInstance
JetCloseFile
JetEndExternalBackup
JetEndExternalBackupInstance2
JetGetAttachInfo
JetGetLogInfo
JetOpenFile
JetReadFile
JetStopBackup
JetTruncateLog