Ошибки и вето при записи

Модуль записи может завершиться ошибкой по многочисленным программным причинам. В этом случае следует наложить вето на текущую операцию резервного копирования, восстановления или теневого копирования, вызвав метод CVssWriter::SetWriterFailure в одном из методов обработчика (например, CVssWriter::OnFreeze или CVssWriter::OnPreRestore) и возвратив значение TRUE. При необходимости можно задать строку сообщения об ошибке в ответ на условие сбоя в определенных методах обработчика с помощью методов IVssComponentEx::SetPrepareForBackupFailureMsg, IVssComponentEx::SetPostSnapshotFailureMsg, IVssComponent::SetPreRestoreFailureMsg и IVssComponent::SetPostRestoreFailureMsg . Инициатор запроса может принять вето или продолжить резервное копирование, игнорируя это вето.

Инициатор запроса должен проверка состояние записи (с помощью IVssBackupComponents::CollectWriterStatus и 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: В службе VSS размещаются следующие записи: модуль записи реестра, модуль записи базы данных регистрации классов COM+, модуль записи журнала событий приложений и модуль записи Microsoft SQL Server 2000 Desktop Engine (MSDE).

  • 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, игнорируя при этом вето.

Ниже приведены примеры вето на авторов:

  • Модуль записи наложен вето на процесс создания теневой копии, если ему не удалось приостановить свои действия во время создания теневой копии. Это означает, что существует высокая вероятность того, что теневая копия является недопустимой, так как операция записи произошла во время состояния "Заморозить".
  • Приложение резервного копирования запросило теневое копирование только тома C: и модуль записи определяет, что теневая копия C: и D: создает резервную копию своих данных. В этом случае автор накатит вето. Приложение резервного копирования может проверить метаданные и определить, будет ли модуль записи игнорироваться или процесс создания теневой копии будет прерван, а затем перезапущен.