共用方式為


JetOpenFile 函式

適用于: Windows |Windows Server

JetOpenFile 函式

JetOpenFile函式會開啟使用中實例的附加資料庫、資料庫修補程式檔案或交易記錄檔,以便執行串流模糊備份。 這些檔案中的資料後續可以使用 JetReadFile來讀取傳回的控制碼。 傳回的控制碼必須使用 JetCloseFile關閉。 先前必須使用 JetBeginExternalBackup起始實例的外部備份。

    JET_ERR JET_API JetOpenFile(
      __in          const tchar* szFileName,
      __out         JET_HANDLE* phfFile,
      __out         unsigned long* pulFileSizeLow,
      __out         unsigned long* pulFileSizeHigh
    );

參數

szFileName

所管理實例所管理之附加資料庫、資料庫修補檔或交易記錄檔的相對或絕對路徑,該實例將讀取以進行備份。

phfFile

接收要讀取之檔案控制碼的輸出緩衝區。

pulFileSizeLow

接收最小有效 32 位檔案大小的輸出緩衝區。

pulFileSizeHigh

接收最大 32 位檔案大小的輸出緩衝區。

傳回值

此函式會傳回具有下列其中一個傳回碼 的 JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱 可延伸儲存引擎錯誤錯誤處理參數

傳回碼

Description

JET_errSuccess

作業已成功完成。

JET_errBackupAbortByServer

作業失敗,因為對 JetStopBackup的呼叫已中止目前的外部備份。 此錯誤只會由 Windows XP 和更新版本傳回。

JET_errClientRequestToStopJetService

無法完成作業,因為與會話相關聯之實例上的所有活動因 JetStopService呼叫而停止。

JET_errFileAccessDenied

作業失敗,因為它因為共用違規或許可權不足而無法開啟要求的檔案。

JET_errFileNotFound

作業失敗,因為它無法開啟要求的檔案,因為它在指定的路徑找不到。 此錯誤只會由 Windows 2000 傳回。

JET_errInstanceUnavailable

無法完成作業,因為與會話相關聯的實例發生嚴重錯誤,需要撤銷所有資料的存取權,以保護該資料的完整性。 此錯誤只會由 Windows XP 和更新版本傳回。

JET_errInvalidBackupSequence

備份作業失敗,因為它已依序呼叫。

JET_errInvalidParameter

提供的其中一個參數包含非預期的值,或包含與另一個參數的值結合時沒有意義的值。 當下列情況時 ,JetOpenFile 可能會發生這種情況:

  • 指定的實例控制碼無效, (Windows XP 和更新版本) 。

  • 指定的檔案名參數為 Null 或零長度字串, (Windows XP 和更新版本) 。

JET_errInvalidPath

作業失敗,因為找不到指定的路徑。

JET_errMissingFileToBackup

無法開啟要求的檔案進行備份,因為找不到該檔案。 此錯誤只會由 Windows XP 和更新版本傳回。

JET_errNoBackup

作業失敗,因為沒有任何外部備份正在進行中。

JET_errNotInitialized

無法完成作業,因為與會話相關聯的實例尚未初始化。

JET_errOutOfMemory

作業失敗,因為無法配置足夠的記憶體來完成。 JetOpenFile會在JetCloseFile關閉先前使用JetOpenFile開啟的檔案之前,嘗試開啟另一個檔案,則會傳回JET_errOutOfMemory。 目前僅支援一個未處理的檔案控制代碼。

JET_errRunningInMultiInstanceMode

作業失敗,因為嘗試在舊版模式中使用引擎, (Windows 2000 相容性模式) 實際上已存在多個實例時,只支援一個實例。

JET_errTermInProgress

無法完成作業,因為與會話相關聯的實例正在關閉。 JET_errRestoreInProgress無法完成作業,因為與會話相關聯的實例上正在進行還原作業。

成功時,將會傳回所要求檔案的控制碼。 如果控制碼是資料庫檔案,該資料庫檔案將會準備進行串流備份,這可能會導致資料庫修補程式檔案與資料庫檔案位於相同的位置。 資料庫修補程式檔案的路徑和檔案名與資料庫檔案完全相同,但具有 。PAT 擴充功能。 檔案的大小也會傳回。

失敗時,輸出緩衝區的狀態將會未定義。 資料庫修補程式檔案可能會在磁片上暫時建立,而且可能會刪除修補程式檔案位置上的任何現有檔案。 失敗會導致取消實例的整個備份程式。 在 Windows XP 和更新版本上,如果嘗試備份未在呼叫時附加至實例的資料庫,將不會取消備份。

警告 基於安全性考慮,請務必注意 JetOpenFile 不會驗證要求的檔案路徑是否與應針對實例備份的檔案集相關聯。 因此,您可以使用此函式來存取執行緒目前安全性內容可開啟的任何檔案。 應用程式必須將傳遞至此函式的路徑限制為一組已知的良好檔案路徑,或可能會洩漏資訊攻擊。

備註

必須有控制碼和檔案大小的輸出緩衝區。 如果不存在,引擎將會當機,因為不會驗證輸出緩衝區參數。

此時,一次只能開啟一個檔案進行備份。

JetOpenFile 不會在開啟要求的檔案之前判斷提示備份許可權。

此函式所報告要讀取的檔案大小可能與磁片上的檔案大小不符。 在 Windows XP 和更新版本上,額外的資訊可能會附加至資料庫檔案,而資料庫引擎會在還原作業期間使用。 因此,應用程式應該只依賴 JetOpenFile 所傳回的檔案大小,或 JetReadFile傳回的實際資料位元組數目。

規格需求

需求

用戶端

需要 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

實作為 JetOpenFileW (Unicode) 和 JetOpenFileA (ANSI) 。

另請參閱

JET_ERR
JET_HANDLE
JET_INSTANCE
JetAttachDatabase
JetBeginExternalBackup
JetCloseFile
JetGetAttachInfo
JetGetLogInfo
JetReadFile
JetStopBackup
JetStopService
JetTruncateLog