JetOSSnapshotFreeze 函式
適用于: Windows |Windows Server
JetOSSnapshotFreeze 函式
JetOSSnapshotFreeze函式會啟動快照集。 當快照集正在進行時,引擎無法執行寫入到磁片活動。
Windows XP:JetOSSnapshotFreeze 是在 Windows XP 中引進。
JET_ERR JET_API JetOSSnapshotFreeze(
__in const JET_OSSNAPID snapId,
__out unsigned long* pcInstanceInfo,
__out JET_INSTANCE_INFO** paInstanceInfo,
__in const JET_GRBIT grbit
);
參數
snapId
快照集會話的識別碼。
pcInstanceInfo
目前在屬於快照集會話之引擎中執行的實例數目。
paInstanceInfo
結構的陣列,每個執行中實例都是快照集會話的一部分,描述實例及其所屬的資料庫。
grbit
這個呼叫的選項。 此參數保留供日後使用,唯一支援的有效值為 0。
傳回值
此函式會傳回具有下列其中一個傳回碼 的 JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱 可延伸儲存引擎錯誤 和 錯誤處理參數。
傳回碼 |
Description |
---|---|
JET_errSuccess |
作業已成功完成。 |
JET_errInvalidParameter |
提供給輸出參數的指標為 Null、快照集會話無效,或 grbit 參數無效。 |
JET_errOSSnapshotInvalidSequence |
快照集會話未處於適當的狀態,無法啟動凍結 (例如,先前的凍結在此會話上失敗,然後再) 。 |
JET_errOSSnapshotNotAllowed |
引擎不是可以執行快照集的狀態。 一或多個串流備份正在進行中,或一或多個實例正在進行復原步驟或終止。 |
JET_errOSSnapshotInvalidSnapId |
快照集會話的識別碼無效。 |
JET_errOutOfMemory |
函式因記憶體不足狀況而失敗。 |
JET_errOutOfThreads |
函式失敗,因為執行凍結的新執行緒無法啟動。 |
如果此函式成功,則不會針對資料庫檔案或屬於凍結實例一部分的記錄檔發出任何寫入 IO。 此外,實例資訊會正確填滿,而且稍後必須透過呼叫 JetFreeBuffer ,並使用傳回之實例資訊陣列的指標釋放它。
如果此函式失敗,引擎會一如往常一般地繼續執行 IO。 如果凍結失敗,就不需要呼叫 JetOSSnapshotThaw 。 此外,不會填入實例資訊,因此不需要釋放此資源。
備註
在凍結期間,不會有任何對附加資料庫或交易記錄發出的寫入 IO,雖然可能會對暫存資料庫或串流檔案發出寫入 IO。
在凍結期間,資料庫和記錄檔將處於凍結狀態 (磁片區快照集映射的狀態) 將會導致稍後還原這些檔案時,可能會進行一般復原。
由於凍結期間內沒有寫入作業,因此對引擎的一般 API 呼叫可能會因為該間隔而停止。 用戶端應用程式必須能夠處理 API 呼叫,如果凍結髮生,可能需要較長的時間再正常。
由於上述的可能效果,因此即使未呼叫執行解除凍結或中止的 API,快照集會話也會停止凍結階段的內部逾時。 您可以使用 JET_paramOSSnapshotTimeout 系統參數來變更逾時值。 請注意,典型的凍結間隔介於 10 秒的範圍內,預設逾時大約 60 秒。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows Vista 或 Windows XP。 |
Server |
需要 Windows Server 2008 或 Windows Server 2003。 |
標頭 |
在 Esent.h 中宣告。 |
程式庫 |
使用 ESENT.lib。 |
Dll |
需要ESENT.dll。 |
Unicode |
實作為 JetOSSnapshotFreezeW (Unicode) 和 JetOSSnapshotFreezeA (ANSI) 。 |
另請參閱
JET_ERR
JET_INSTANCE_INFO
JET_OSSNAPID
JetOSSnapshotAbort
JetOSSnapshotPrepare
JetOSSnapshotPrepareInstance
JetOSSnapshotThaw