Работа с альтернативными расположениями во время восстановления

Существует множество причин, по которым инициатор запроса не может восстановить файлы с носителя резервного копирования в исходное расположение. Например, методу восстановления или целевому объекту может потребоваться такое восстановление, или текущее расположение восстановления может быть занято и не может быть записываемым.

Для обработки таких случаев модуль записи может определить альтернативное сопоставление расположения— нестандартное назначение восстановления, которое будет использоваться в особых обстоятельствах.

Термин альтернативное сопоставление расположения, используемый в VSS, не следует путать с термином альтернативный путь. Сопоставления альтернативных расположений используются только во время операций восстановления и ссылаются на альтернативное назначение для операций восстановления. Альтернативные пути используются только во время операций резервного копирования и ссылаются на альтернативный источник, из которого выполняется резервное копирование.

Чтобы использовать альтернативные сопоставления расположений во время восстановления, инициатор запроса выполняет следующие действия (как правило, после создания события PreRestore ):

  1. Используя экземпляр интерфейса IVssExamineWriterMetadata , полученный путем получения хранимого модуля записи, инициатор запроса использует метод IVssExamineWriterMetadata::GetAlternateLocationMapping для получения альтернативных сопоставлений расположения модуля записи в качестве экземпляров интерфейса IVssWMFiledesc .

    Примечание

    Инициатор запроса использует IVssExamineWriterMetadata::GetAlternateLocationMapping, а не IVssComponent::GetAlternateLocationMapping. Первый возвращает эти альтернативные сопоставления расположения, доступные для использования инициатором запроса. Последний используется для указания альтернативных сопоставлений расположений, фактически используемых инициатором запроса.

     

  2. Вызов IVssExamineWriterMetadata::GetAlternateLocationMapping возвращает экземпляр интерфейса IVssWMFiledesc . Этот экземпляр содержит сведения о наборе файлов — путь, заданный параметром IVssWMFiledesc::GetPath. спецификация файла, возвращенная через IVssWMFiledesc::GetFilespec, и флаг рекурсии, полученный из IVssWMFiledesc::GetRecursive, соответствующий одному из добавленных наборов файлов (с помощью IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles или IVssCreateWriterMetadata::AddFilesToFileGroup ) в один из компонентов, управляемых модулем записи.

    Значение, возвращаемое IVssWMFiledesc::GetAlternateLocation , является альтернативным сопоставлением расположения для этого набора файлов.

  3. Сопоставления альтернативных расположений не содержат сведений о компонентах, поэтому потребуется сравнить сведения о наборе файлов (путь, спецификация файла и флаг рекурсии), полученные путем вызова IVssExamineWriterMetadata::GetAlternateLocationMapping с данными, содержащимися компонентами модуля записи.

    Эти сведения можно найти путем перебора компонентов модуля записи и вызова IVssExamineWriterMetadata::GetComponent для получения экземпляра интерфейса IVssWMComponent и использования IVssWMComponent::GetFile для получения экземпляра IVssWMFiledesc , содержащего сведения о наборе файлов компонентов.

    Если сведения о наборе файлов, возвращенные экземпляром IVssWMFiledesc, полученным из IVssExamineWriterMetadata::GetComponent и IVssWMComponent::GetFile, совпадают с данными, полученными из экземпляра IVssWMFiledesc::GetAlternateLocation, был найден компонент, управляющий файлами с определенным альтернативным сопоставлением расположения.

  4. Разместив компонент, инициатор запроса может определить условия, при которых следует использовать альтернативное сопоставление расположения, выполнив следующие действия.

    • Проверка метода восстановления компонента, который получается путем вызова IVssExamineWriterMetadata::GetRestoreMethod.

    • Проверьте, переопределяет ли целевой объект восстановления метод восстановления, вызвав IVssComponent::GetRestoreTarget.

      Если компонент, найденный в документе метаданных записи , был явно включен в резервную копию, экземпляр интерфейса IVssComponent будет соответствовать данному компоненту. Если компонент был неявно включен в резервную копию, экземпляр IVssComponent будет соответствовать компоненту, определяющему набор компонентов, подкомпонентом которого является компонент в документе метаданных записи.

  5. Используя эти сведения, инициатор запроса может определить по компоненту, требуется ли восстановить определенный набор файлов данного компонента в назначение, определенное альтернативным сопоставлением расположения.

  6. При использовании альтернативного сопоставления расположения запрашивающий объект учитывает дескриптор файла набора файлов и рекурсивный флаг и использует путь, предоставленный альтернативным сопоставлением расположения.

    Инициатор запроса указывает, что он использовал альтернативное сопоставление расположения во время операции восстановления, вызвав IVssBackupComponents::AddAlternativeLocationMapping с информацией о расположении набора файлов по умолчанию, используемым альтернативным назначением восстановления и именем компонента.

    Если набор файлов управляется компонентом, явно включенным в резервную копию, будет использоваться это имя компонента. Если набор файлов управляется компонентом, неявно включенным в резервную копию, то используется имя компонента, определяющего набор компонентов, в котором компонент, управляющий набором файлов, является подкомпонентом.

Записи проверяют, были ли восстановлены наборы файлов из одного из их компонентов в альтернативное сопоставление расположения, вызывая IVssComponent::GetAlternateLocationMapping.