ライター エラーと拒否権
ライターは、さまざまなプログラム上の理由で失敗する可能性があります。 これが発生した場合は、いずれかのハンドラー メソッドで CVssWriter::SetWriterFailure メソッド (たとえば、CVssWriter::OnFreezeまたはCSVsWriter::OnPreRestore) を呼び出し、TRUE 返すことで、進行中のバックアップ、復元、またはシャドウ コピー操作を拒否する必要があります。 必要に応じて、IVssComponentEx::SetPrepareForBackupFailureMsg、IVssComponentEx::SetPost を使用して、特定のハンドラー メソッドのエラー状態に応答してエラー メッセージ文字列を設定することもできます。 SnapshotFailureMsg、IVssComponent::SetPreRestoreFailureMsg、および IVssComponent::SetPostRestoreFailureMsg メソッドをします。 要求者は、拒否権を受け入れるか、バックアップを続行できます。拒否権は無視されます。
リクエスターは、生成する各イベントの後にライターの状態 (IVssBackupComponents::GatherWriterStatus と IVssBackupComponents::GetWriterStatusを使用) を確認する必要があります。
場合によっては、 エラー メッセージは、これらのエラーから取得できます (IVssComponentEx::GetPrepareForBackupFailureMsg、IVssComponent::GetPreRestoreFailureMsg、IVssComponentEx::GetPostSnapshotFailureMsg、IVssComponent::GetPostRestoreFailureMsgメソッド)、またはライターがメタデータの設定 (IVssComponent::SetRestoreMetadata と IVssComponent::エラー状態情報を含む SetBackupMetadata)。 このようなエラー メッセージを表示する方法を示すコード例については、「IVssComponentEx::GetPrepareForBackupFailureMsgを参照してください。
エラーの状態に応じて、リクエスターまたはそのオペレーターは、バックアップ ジョブまたはシステムの状態に必要な変更を加えて、バックアップとシャドウ コピーを再起動できます。
たとえば、GetWriterStatus次のものが返されたとします。
VSS_E_WRITERERROR_INCONSISTENTSNAPSHOT は、要求元がシャドウ コピーにボリュームを追加する可能性があることを示唆します
VSS_E_WRITERERROR_RETRYABLE は、再構成なしで再試行が機能する可能性があることを示します。 ライターが複数回再試行した後もエラーを返し続ける場合は、ライターをホストするサービスを再起動してみてください。 VSS サービスでホストされているライターは、レジストリ ライター、COM+ クラス登録データベース ライター、シャドウ コピー最適化ライター、および自動システム回復 (ASR) ライターです。 ライターが独自のプロセスでライターをホストするアプリケーションに属している場合は、アプリケーションを再起動してみてください。
Windows Server 2003 および Windows XP: レジストリ ライター、COM+ クラス登録データベース ライター、アプリケーション イベント ログ ライター、Microsoft SQL Server 2000 デスクトップ エンジン (MSDE) ライターの各ライターが VSS サービスでホストされます。
VSS_E_WRITER_STATUS_NOT_AVAILABLEは、ライターが使用可能なバックアップセッションと復元セッションの最大数に達している可能性があり、システムのビジー状態が少ない場合に再試行が機能する可能性があることを示します。
VSS_E_WRITERERROR_OUTOFRESOURCES または VSS_E_WRITERERROR_TIMEOUT は、再試行する前にシステムの負荷を減らすことを示唆している可能性があります
VSS_E_WRITERERROR_NONRETRYABLE または VSS_E_WRITER_NOT_RESPONDING は、VSS でデータをバックアップしようとするのを妨げるほど重大なライター エラーを示している可能性があります。
ライターと生成されるコンポーネントによっては、拒否またはエラーの後にバックアップ アプリケーションを中止する必要はありません。
たとえば、要求元は、シャドウ コピーの目的がアプリケーション A をバックアップすることであり、バックアップ アプリケーション B のライターから拒否権を受け取ったことを判断できます。この場合、拒否権を無視しながらアプリケーション A をバックアップし続けるのは完全に許容されます。
ライター拒否の例を次に示します。
- シャドウ コピーの作成中にアクティビティを中断できなかった場合、ライターはシャドウ コピーの作成プロセスを拒否します。 これは、書き込み操作が Freeze 状態の間に発生したため、シャドウ コピーが無効である可能性が高いことを示します。
- バックアップ アプリケーションはボリューム C: のみのシャドウ コピーを要求しました。ライターは、C: と D: のシャドウ コピーがそのデータをバックアップすることを決定します。 この場合、ライターは拒否します。 バックアップ アプリケーションはメタデータを調べて、ライターが無視されるか、シャドウ コピー作成プロセスが中止され、後で再起動されるかを判断できます。