共用方式為


寫入器錯誤和否決

由於許多程序設計原因,寫入器可能會失敗。 發生這種情況時,它應該在其中一個處理程式方法中呼叫 CVssWriter::SetWriterFailure 方法,以否決進行中的備份、還原或陰影複製作業(例如,CVssWriter::OnFreezeCVssWriter::OnPreRestore),並傳回 TRUE。 它也可以選擇性地使用 IVssComponentEx::SetPrepareForBackupFailureMsgIVssComponentEx::SetPostSna 來回應特定處理程式方法中的失敗狀況pshotFailureMsgIVssComponent::SetPreRestoreFailureMsgIVssComponent::SetPostRestoreFailureMsg 方法。 要求者可以接受否決或繼續備份,忽略否決。

要求者應該檢查寫入器狀態(使用 IVssBackupComponents::GatherWriterStatus,並 IVssBackupComponents::GetWriterStatus),並遵循它所產生的每個事件。

在某些情況下, 錯誤訊息可以從這些失敗中擷取(使用 IVssComponentEx::GetPrepareForBackupFailureMsgIVssComponent::GetPreRestoreFailureMsgIVssComponentEx::GetPostSnapshotFailureMsgIVssComponent::GetPostRestoreFailureMsg 方法),或寫入器可以選擇設定元數據 (使用 IVssComponent::SetRestoreMetadataIVssComponent::SetBackupMetadata 錯誤狀態資訊)。 如需示範如何檢視這類錯誤訊息的範例程式代碼,請參閱 IVssComponentEx::GetPrepareForBackupFailureMsg

根據錯誤狀態,要求者或其作員可以重新啟動備份和陰影複製,並視需要修改備份作業或系統的狀態。

例如,假設 GetWriterStatus 傳回下列內容:

  • VSS_E_WRITERERROR_INCONSISTENTSNAPSHOT 建議要求者可能會將其他磁碟區新增至陰影複製

  • VSS_E_WRITERERROR_RETRYABLE 表示重試而不重新設定可能正常運作。 如果寫入器在多次重試之後繼續傳回錯誤,請嘗試重新啟動裝載寫入器的服務。 下列寫入器裝載於 VSS 服務:登錄寫入器、COM+ 類別註冊資料庫寫入器、陰影複製優化寫入器,以及自動化系統復原 (ASR) 寫入器。 如果寫入器屬於在其本身進程中裝載寫入器的應用程式,請嘗試重新啟動應用程式。

    Windows Server 2003 和 Windows XP: 下列寫入器裝載於 VSS 服務:登錄寫入器、COM+ 類別註冊資料庫寫入器、應用程式事件記錄寫入器,以及MICROSOFT SQL Server 2000 Desktop Engine (MSDE) 寫入器。

  • VSS_E_WRITER_STATUS_NOT_AVAILABLE表示寫入器可能已達到可用備份和還原會話的數目上限,而且當系統較不忙碌時,重試可能會正常運作。

  • VSS_E_WRITERERROR_OUTOFRESOURCESVSS_E_WRITERERROR_TIMEOUT 可能會建議在重試之前減少系統負載

  • VSS_E_WRITERERROR_NONRETRYABLEVSS_E_WRITER_NOT_RESPONDING 可能會指出寫入器錯誤,以免嘗試使用 VSS 備份其數據。

根據哪一個寫入器和哪些元件產生它們,備份應用程式不一定需要在否決或錯誤後中止。

例如,要求者可能會決定陰影複製的意圖是備份應用程式 A,而且已從寫入器收到備份應用程式 B 的否決。在此情況下,可以完全接受繼續備份應用程式 A,同時忽略否決。

以下是寫入器否決的範例:

  • 寫入器在建立陰影複製期間無法暫停其活動時,會否決陰影複製建立程式。 這表示陰影複製無效的可能性很高,因為凍結狀態期間發生寫入作業。
  • 備份應用程式只要求磁碟區 C: 的陰影複製,而寫入器會判斷 C: 和 D: 的陰影複製是備份其數據。 在此情況下,寫入器將會否決。 備份應用程式可能會檢查元數據,並判斷是否會忽略寫入器,或是將中止陰影複製建立程式,並在稍後重新啟動。