還原清除和終止概觀
在還原之後,寫入器會檢查作業的狀態,讓它們能夠使用還原的資料並處理錯誤。 要求者必須等候此活動完成。 如需詳細資訊,請參閱 在 VSS 下處理還原的概觀。
下表顯示還原作業發生之後所需的動作和事件順序。
要求者動作 | 事件 | 寫入器動作 |
---|---|---|
要求者指出還原結束 (請參閱 IVssBackupComponents::P ostRestore) 。 | PostRestore | 寫入器會進行還原後清除,並處理還原失敗和已還原至非標準位置的檔案, (請參閱 CVssWriter::OnPostRestore、 IVssComponent) 。 |
要求者會等候寫入器以IVssAsync處理PostRestore事件。 它也應該確認寫入器狀態 (請參閱 IVssBackupComponents::GatherWriterStatus、 IVssBackupComponents::GetWriterStatus) 。 | 無 | 無 |
要求者會釋放 IVssBackupComponents 介面。 | 無 | 無 |
清除和終止期間的要求者動作
此時,要求者會藉由呼叫IVssBackupComponents::P ostRestore來產生PostRestore事件,以指出其檔案還原活動的結尾。
要求者的動作僅限於等候寫入器,這可能需要執行一些最終清除並處理還原錯誤,並在所有寫入器從處理PostRestore事件傳回之後釋放IVssBackupComponents介面。
清除和終止期間的寫入器動作
PostRestore事件是由虛擬方法CVssWriter::OnPostRestore處理。 預設實作只會傳回 true ,而不採取任何動作。 如果寫入器需要對還原後狀況執行更多控制,它可以覆寫此方法。
除了任何一般清除 (,例如移除寫入器可能會在 CVssWriter::OnPostRestore中執行的暫存檔) ,它可以處理還原作業的成功或失敗。
它如何處理還原錯誤、還原至替代位置的檔案,以及未來還原的需求完全取決於寫入器。 一般動作可能包括比較替代位置或新位置中的檔案與目前使用的檔案、合併來自多個檔案的資料,或啟動連線到新資料檔案的新會話。 VSS 提供下列機制,以逐一元件支援此功能:
- 您可以使用 IVssComponent::GetFileRestoreStatus找到還原任何元件的成功或失敗。
- 還原檔案中的替代位置對應使用將會以 IVssComponent::GetAlternateLocationMapping表示。
- 藉由呼叫 IVssComponent::GetAdditionalRestores來判斷還原是否為累加,而且需要進一步還原。 在此方法傳回 false 之前,需要完整還原其資料的寫入器不應重新開機。
- 寫入器可以使用IVssComponent::GetNewTargetCount和IVssComponent::GetNewTarget,判斷要求者是否需要將檔案還原至先前未指定的位置
(如需將檔案還原至非預設位置的詳細資訊,請參閱 非預設備份和還原位置。)
如同任何 IVssComponent 方法,指定實例所傳回的資訊會套用至 明確包含 以供備份的元件,以及針對備份子元件 所隱含包含 的任何元件,包括要求者使用 IVssBackupComponents::AddRestoreSubcomponents::AddRestoreSubcomponent (如需詳細資料,請參閱 使用可選取性進行還原和子 元件以取得詳細資料) 。
由於寫入器需要存取備份元件檔,因此要求者必須不要釋放 IVssBackupComponents 介面,直到寫入器完成處理為止。