Arbeiten mit alternativen Speicherorten während der Wiederherstellung

Es gibt viele Gründe, warum ein Anforderer dateien von Sicherungsmedien an ihrem ursprünglichen Speicherort nicht wiederherstellen kann oder nicht. Beispielsweise kann für eine Wiederherstellungsmethode oder ein Wiederherstellungsziel eine solche Wiederherstellung erforderlich sein, oder der aktuelle Wiederherstellungsspeicherort kann belegt und nicht beschreibbar sein.

Um solche Fälle zu behandeln, hat ein Writer möglicherweise eine alternative Standortzuordnung definiert, ein nicht standardmäßiges Wiederherstellungsziel, das für besondere Umstände verwendet werden soll.

Der Begriff Alternative Standortzuordnung, wie er mit VSS verwendet wird, sollte nicht mit dem Begriff alternativer Pfad verwechselt werden. Zuordnungen alternativer Speicherorte werden nur bei Wiederherstellungsvorgängen verwendet und verweisen für Wiederherstellungsvorgänge auf ein alternatives Ziel. Alternative Pfade werden nur bei Sicherungsvorgängen verwendet und verweisen auf eine alternative Quelle, von der aus gesichert werden soll.

Um während der Wiederherstellung alternative Speicherortzuordnungen zu verwenden, würde ein Anforderer die folgenden Schritte ausführen (in der Regel nach der Generierung eines PreRestore-Ereignisses ):

  1. Mithilfe einer instance der IVssExamineWriterMetadata-Schnittstelle, die durch Abrufen eines gespeicherten Writers abgerufen wird, verwendet ein Anforderer die IVssExamineWriterMetadata::GetAlternateLocationMapping-Methode, um die alternativen Standortzuordnungen eines Writers als Instanzen der IVssWMFiledesc-Schnittstelle abzurufen.

    Hinweis

    Der Anforderer verwendet IVssExamineWriterMetadata::GetAlternateLocationMapping, nicht IVssComponent::GetAlternateLocationMapping. Erstere gibt diese alternativen Standortzuordnungen zurück, die für die Verwendung durch einen Anforderer verfügbar sind. Letzteres wird verwendet, um die alternativen Standortzuordnungen anzugeben, die tatsächlich von einem Anforderer verwendet werden.

     

  2. Der Aufruf von IVssExamineWriterMetadata::GetAlternateLocationMapping gibt eine instance der IVssWMFiledesc-Schnittstelle zurück. Diese instance enthält Dateisatzinformationen– ein pfad, der von IVssWMFiledesc::GetPath angegeben wird. eine Dateispezifikation, die über IVssWMFiledesc::GetFilespec zurückgegeben wird, und ein rekursionsflag, das von IVssWMFiledesc::GetRecursive abgerufen wurde– mit einem der hinzugefügten Dateisätze (mit IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles oder IVssCreateWriterMetadata:: AddFilesToFileGroup) für eine der vom Writer verwalteten Komponenten.

    Der von IVssWMFiledesc::GetAlternateLocation zurückgegebene Wert ist die alternative Speicherortzuordnung für diesen Dateisatz.

  3. Alternative Speicherortzuordnungen enthalten keine Komponenteninformationen. Daher ist es erforderlich, die Dateisatzinformationen (Pfad, Dateispezifikation und Rekursionsflagge), die durch Aufrufen von IVssExamineWriterMetadata::GetAlternateLocationMapping abgerufen werden, mit den Informationen zu vergleichen, die in den Komponenten des Writers enthalten sind.

    Diese Informationen finden Sie, indem Sie die Komponenten des Writer durchlaufen und IVssExamineWriterMetadata::GetComponent aufrufen, um eine instance der IVssWMComponent-Schnittstelle abzurufen, und verwenden Sie IVssWMComponent::GetFile, um eine IVssWMFiledesc-instance mit den Komponentendateisatzinformationen abzurufen.

    Wenn die von der instance von IVssWMFiledesc zurückgegebenen Dateisatzinformationen, die von IVssExamineWriterMetadata::GetComponent und IVssWMComponent::GetFile zurückgegeben wurden, mit den von IVssWMFiledesc instance abgeleiteten IVssWMFiledesc::GetAlternateLocation übereinstimmen, wurde die Komponente gefunden, die die Dateien mit der spezifischen alternativen Speicherortzuordnung verwaltet.

  4. Nachdem er die Komponente gefunden hat, kann der Anforderer die Bedingungen bestimmen, unter denen eine alternative Standortzuordnung verwendet werden soll, indem er die folgenden Schritte ausführt:

    • Untersuchen der Wiederherstellungsmethode der Komponente, die durch Aufrufen von IVssExamineWriterMetadata::GetRestoreMethod abgerufen wird.

    • Überprüfen Sie, ob ein Wiederherstellungsziel die Wiederherstellungsmethode überschreibt, indem Sie IVssComponent::GetRestoreTarget aufrufen.

      Wenn die im Writer-Metadatendokument gefundene Komponente explizit in die Sicherung einbezogen wurde, entspricht die instance der IVssComponent-Schnittstelle dieser Komponente. Wenn die Komponente implizit in die Sicherung einbezogen wurde, entspricht die instance von IVssComponent der Komponente, die den Komponentensatz definiert, dessen Komponente im WriterMetadatendokument eine Unterkomponente ist.

  5. Mit diesen Informationen kann der Anforderer komponentenweise ermitteln, ob er einen bestimmten Dateisatz einer bestimmten Komponente in einem Ziel wiederherstellen muss, das durch die Zuordnung des alternativen Speicherorts definiert wird.

  6. Bei Verwendung einer alternativen Speicherortzuordnung berücksichtigt der Anforderer den Dateideskriptor und das rekursive Flag des Dateisatzes und verwendet den Pfad, der von der Alternativen Speicherortzuordnung bereitgestellt wird.

    Der Anforderer gibt an, dass er während eines Wiederherstellungsvorgangs eine alternative Speicherortzuordnung verwendet hat, indem er IVssBackupComponents::AddAlternativeLocationMapping mit den Standardspeicherortinformationen des Dateisatzes, dem verwendeten alternativen Wiederherstellungsziel und einem Komponentennamen aufruft.

    Wenn der Dateisatz von einer Komponente verwaltet wurde, die explizit in der Sicherung enthalten war, wird dieser Komponentenname verwendet. Wenn der Dateisatz von einer Komponente verwaltet wurde, die implizit in die Sicherung einbezogen wurde, wird der Name der Komponente verwendet, die den Komponentensatz definiert, dessen Komponente, die den Dateisatz verwaltet, eine Unterkomponente ist.

Writer überprüfen, ob Dateisätze aus einer ihrer Komponenten in einer alternativen Speicherortzuordnung wiederhergestellt wurden, indem sie IVssComponent::GetAlternateLocationMapping aufrufen.