Работа с альтернативными расположениями во время восстановления
Существует множество причин, по которым инициатор запроса не может восстановить файлы с носителя резервного копирования в исходное расположение. Например, методу восстановления или целевому объекту может потребоваться такое восстановление, или текущее расположение восстановления может быть занято и не может быть записываемым.
Для обработки таких случаев модуль записи может определить альтернативное сопоставление расположения— нестандартное назначение восстановления, которое будет использоваться в особых обстоятельствах.
Термин альтернативное сопоставление расположения, используемый в VSS, не следует путать с термином альтернативный путь. Сопоставления альтернативных расположений используются только во время операций восстановления и ссылаются на альтернативное назначение для операций восстановления. Альтернативные пути используются только во время операций резервного копирования и ссылаются на альтернативный источник, из которого выполняется резервное копирование.
Чтобы использовать альтернативные сопоставления расположений во время восстановления, инициатор запроса выполняет следующие действия (как правило, после создания события PreRestore ):
Используя экземпляр интерфейса IVssExamineWriterMetadata , полученный путем получения хранимого модуля записи, инициатор запроса использует метод IVssExamineWriterMetadata::GetAlternateLocationMapping для получения альтернативных сопоставлений расположения модуля записи в качестве экземпляров интерфейса IVssWMFiledesc .
Примечание
Инициатор запроса использует IVssExamineWriterMetadata::GetAlternateLocationMapping, а не IVssComponent::GetAlternateLocationMapping. Первый возвращает эти альтернативные сопоставления расположения, доступные для использования инициатором запроса. Последний используется для указания альтернативных сопоставлений расположений, фактически используемых инициатором запроса.
Вызов IVssExamineWriterMetadata::GetAlternateLocationMapping возвращает экземпляр интерфейса IVssWMFiledesc . Этот экземпляр содержит сведения о наборе файлов — путь, заданный параметром IVssWMFiledesc::GetPath. спецификация файла, возвращенная через IVssWMFiledesc::GetFilespec, и флаг рекурсии, полученный из IVssWMFiledesc::GetRecursive, соответствующий одному из добавленных наборов файлов (с помощью IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles или IVssCreateWriterMetadata::AddFilesToFileGroup ) в один из компонентов, управляемых модулем записи.
Значение, возвращаемое IVssWMFiledesc::GetAlternateLocation , является альтернативным сопоставлением расположения для этого набора файлов.
Сопоставления альтернативных расположений не содержат сведений о компонентах, поэтому потребуется сравнить сведения о наборе файлов (путь, спецификация файла и флаг рекурсии), полученные путем вызова IVssExamineWriterMetadata::GetAlternateLocationMapping с данными, содержащимися компонентами модуля записи.
Эти сведения можно найти путем перебора компонентов модуля записи и вызова IVssExamineWriterMetadata::GetComponent для получения экземпляра интерфейса IVssWMComponent и использования IVssWMComponent::GetFile для получения экземпляра IVssWMFiledesc , содержащего сведения о наборе файлов компонентов.
Если сведения о наборе файлов, возвращенные экземпляром IVssWMFiledesc, полученным из IVssExamineWriterMetadata::GetComponent и IVssWMComponent::GetFile, совпадают с данными, полученными из экземпляра IVssWMFiledesc::GetAlternateLocation, был найден компонент, управляющий файлами с определенным альтернативным сопоставлением расположения.
Разместив компонент, инициатор запроса может определить условия, при которых следует использовать альтернативное сопоставление расположения, выполнив следующие действия.
Проверка метода восстановления компонента, который получается путем вызова IVssExamineWriterMetadata::GetRestoreMethod.
Проверьте, переопределяет ли целевой объект восстановления метод восстановления, вызвав IVssComponent::GetRestoreTarget.
Если компонент, найденный в документе метаданных записи , был явно включен в резервную копию, экземпляр интерфейса IVssComponent будет соответствовать данному компоненту. Если компонент был неявно включен в резервную копию, экземпляр IVssComponent будет соответствовать компоненту, определяющему набор компонентов, подкомпонентом которого является компонент в документе метаданных записи.
Используя эти сведения, инициатор запроса может определить по компоненту, требуется ли восстановить определенный набор файлов данного компонента в назначение, определенное альтернативным сопоставлением расположения.
При использовании альтернативного сопоставления расположения запрашивающий объект учитывает дескриптор файла набора файлов и рекурсивный флаг и использует путь, предоставленный альтернативным сопоставлением расположения.
Инициатор запроса указывает, что он использовал альтернативное сопоставление расположения во время операции восстановления, вызвав IVssBackupComponents::AddAlternativeLocationMapping с информацией о расположении набора файлов по умолчанию, используемым альтернативным назначением восстановления и именем компонента.
Если набор файлов управляется компонентом, явно включенным в резервную копию, будет использоваться это имя компонента. Если набор файлов управляется компонентом, неявно включенным в резервную копию, то используется имя компонента, определяющего набор компонентов, в котором компонент, управляющий набором файлов, является подкомпонентом.
Записи проверяют, были ли восстановлены наборы файлов из одного из их компонентов в альтернативное сопоставление расположения, вызывая IVssComponent::GetAlternateLocationMapping.