Auswählbarkeit und Arbeiten mit Komponenteneigenschaften
Das Arbeiten mit implizit ausgewählten Komponenten erfordert Zugriff auf das Sicherungskomponentendokument und die WriterMetadatendokumente.
Hierfür gibt es zwei Gründe:
- Die im Sicherungskomponentendokument gespeicherten Komponentendaten (dargestellt durch die IVssComponent-Schnittstelle) haben keinen Zugriff auf Komponentendateisatzinformationen – Dateispezifikation, Pfad und Rekursionsflag. (Weitere Informationen finden Sie unter Arbeiten mit dem Dokument "Sicherungskomponenten".)
- Nur Komponenten, die während der Sicherung explizit im Sicherungskomponentendokument enthalten sind, haben ihre Informationen direkt im Sicherungskomponentendokument gespeichert. Anforderer und Writer müssen die über die IVssComponent-Schnittstelle verfügbaren Informationen in Verbindung mit logischen Pfadinformationen und WriterMetadatendokumenten verwenden, um Informationen zu implizit eingeschlossenen Komponenten abzurufen und Deren Eigenschaften festzulegen.
Der unter Logisches Pfading von Komponenten beschriebene Fall "MyWriter" kann verwendet werden, um die Auswählbarkeit für die Sicherung zu veranschaulichen.
| Komponentenname | Logischer Pfad | Für die Sicherung auswählbar | Für die Wiederherstellung auswählbar | Explizit eingeschlossen |
|---|---|---|---|---|
| "Ausführbare Dateien" | "" | N | N | J |
| "ConfigFiles" | "Ausführbare Dateien" | N | N | J |
| "LicenseInfo" | "" | J | N | J |
| "Security" | "" | J | N | J |
| "UserInfo" | "Security" | N | N | N |
| "Zertifikate" | "Security" | N | N | N |
| "writerData" | "" | J | J | J |
| "Set1" | "writerData" | N | J | N |
| "Jan" | "writerData \ Set1" | N | N | N |
| "Dec" | "writerData \ Set1" | N | N | N |
| "Set2" | "writerData" | N | J | N |
| "Jan" | "writerData \ Set2" | N | N | N |
| "Dec" | "writerData \ Set2" | N | N | N |
| "Abfrage" | "writerData \ QueryLogs" | N | N | N |
| "Nutzung" | "writerData" | J | J | N |
| "Jan" | "writerData \ Usage" | N | N | N |
| "Dec" | "writerData \ Usage" | N | N | N |
Implizit eingeschlossene Komponenten im Sicherungssatz
Beim Überprüfen des Writer-Metadatendokuments eines Writers (siehe IVssBackupComponents::GetWriterMetadata)während der Sicherung sollte ein Anforderer eine Liste aller Komponenten, ihrer logischen Pfadeund ihrer Dateisatzinformationen speichern.
Dateisatz- und ausgeschlossene Dateiinformationen werden benötigt, um eine Liste von Dateien für jede (explizit oder implizit) enthaltene Komponente zu bestimmen.
Bei Sicherungskomponenten, die für Sicherungskomponenten nicht auswählbar und für Sicherungskomponenten, die keinen Komponentensatzdefinieren, auswählbar sind, werden nur Dateisatz- und ausgeschlossene Dateiinformationen benötigt, um alle Kandidaten der Komponente für die Sicherung zu identifizieren, da diese Komponenten keine Unterkomponenten definieren.
Für explizit eingeschlossene, für Sicherungskomponenten auswählbare Komponenten, die einen Komponentensatz definieren, müssen die Dateisätze und Dateiinformationen sowohl für die definierende Komponente als auch alle Unterkomponenten verwendet werden, um Dateien für die Sicherung auszuwählen.
Dies bedeutet, dass Sicherungssätze für die Komponenten "Executables", "ConfigFiles" und "LicenseInfo" nur gefunden werden können, indem die Writer-Metadaten nur für diese Komponenten mit ihren Instanzen der IVssWMComponent-Schnittstelle untersucht werden.
Wenn writerData jedoch explizit in der Sicherung enthalten ist, müssen Sie die Instanz der IVssWMComponent-Schnittstelle und die Instanzen für "Set1" überprüfen. "Jan" (mit logischem Pfad "writerData \ Set1"), "Dec" (mit logischem Pfad "writerData \ Set1"), "Set2", "Jan" (mit logischem Pfad "writerData \ Set2"), "Dec" (mit logischem Pfad "writerData \ Set2"), "Query", "Usage", "Jan" (mit logischem Pfad "writerData \ Usage") und "Dec" (mit logischem Pfad "writerData \ Usage").
Hierzu muss ein Anforderer zunächst identifizieren, dass die Komponente "writerData" (logischer Pfad "") auswählbar ist. Anschließend müssen alle anderen vom Writer verwalteten Komponenten überprüft werden, um zu bestimmen, ob das erste Element in ihrem logischen Pfad "writerData" ist. Die Komponenten, die "writerData" als führende Member ihres logischen Pfads aufweisen, werden als Unterkomponenten von "writerData" identifiziert und implizit ausgewählt, wenn sie explizit ausgewählt werden.
Tatsächlich muss eine ähnliche Überprüfung durchgeführt werden, um zu bestimmen, dass keine Komponente "LicenseInfo" als führendes Element ihres logischen Pfads hat und daher "LicenseInfo" über keine Unterkomponenten verfügt.
Aufgrund der Komplexität dieses Mechanismus in VSS kann es für viele Anfordernde Writer nützlich sein, eigene Strukturen zum Speichern von Komponenten- und Sicherungssatzinformationen für explizite und implizit hinzugefügte Komponenten zu erstellen.
Eigenschaften implizit eingeschlossener Komponenten
Bei Wiederherstellungs- und Sicherungsvorgängen werden Instanzen der Schnittstellen IVssComponent und IVssBackupComponents sowohl zum Abrufen von Informationen über Komponenten als auch zum Festlegen oder Ändern von Komponenteneigenschaften verwendet. Allerdings verfügen nur explizit enthaltene Komponenten über Instanzen der IVssComponent-Schnittstelle oder sind für die IVssBackupComponents-Schnittstelle zugänglich.
Einige Eigenschaften sind komponentenweit im Bereich festgelegt. Diese Eigenschaften umfassen Folgendes:
- Sicherungs- und Wiederherstellungsstatus:
IVssBackupComponents::SetBackupSucceeded
IVssComponent::GetBackupSucceeded
IVssBackupComponents::SetFileRestoreStatus
IVssComponent::GetFileRestoreStatus
- Sicherungs- und Wiederherstellungsoptionen:
IVssBackupComponents::SetBackupOptions
IVssComponent::GetBackupOptions
IVssBackupComponents::SetRestoreOptions
IVssComponent::GetRestoreOptions
- Fehlermeldungen:
IVssComponent::SetPostRestoreFailureMsg
IVssComponent::SetPreRestoreFailureMsg
IVssComponent::SetPostRestoreFailureMsg
IVssComponent::SetPreRestoreFailureMsg
- Wiederherstellungsziele:
IVssComponent::SetRestoreTarget
IVssComponent::GetRestoreTarget
- Sicherungsstempel:
IVssComponent::SetBackupStamp
IVssComponent::GetBackupStamp
- Zusätzliche Metadaten:
IVssComponent::SetRestoreMetadata
IVssComponent::GetRestoreMetadata
IVssComponent::SetBackupMetadata
IVssComponent::GetBackupMetadata
Daher verwenden Sie die Instanz der IVssComponent-Schnittstelle des definierenden Members einer Komponentengruppe oder den Namen, typ und logischen Pfad des definierenden Members mit einer IVssBackupComponents-Methode, um Eigenschaften für alle Member der Komponentengruppe festzulegen oder abzurufen.
Aus diesem Grund werden Komponentensätze als Einheiten behandelt. Beispielsweise ist eine Sicherung eines Komponentensatzes nur erfolgreich, wenn die Sicherung aller Dateisätze aller komponenten erfolgreich ist.
Nehmen wir im vorherigen Beispiel an, dass eine Datei in der Komponente "Jan" (mit dem logischen Pfad "writerData \ Set2") ein Member der durch "writerData" definierten Komponentenmenge ist. Wenn eine der Dateien von "Jan" nicht gesichert werden konnte, verwendet ein Anforderer beim Festlegen von IVssBackupComponents::SetBackupSucceeded mit false die Informationen von "writerData" als Argumente, um den Fehler des Komponentensatzes anzugeben.
Auf ähnliche Weise gilt der von IVssComponent::GetBackupSucceededed für die Instanz von "writerData" der IVssComponent-Schnittstelle zurückgegebene Zustand nicht nur für "writerData", sondern auch für alle zugehörigen Unterkomponenten.
Wenn ein Writer das Wiederherstellungsziel mithilfe von IVssComponent::SetRestoreTarget der Instanz von "writerData" von IVssComponentgeändert hat, würde dies das Wiederherstellungsziel für alle Dateisätze aller Unterkomponenten von "writerData" ändern.
Die folgenden Eigenschaften gelten nicht komponentenweit, sondern für bestimmte Dateien oder Dateisätze:
- Alternative Standortzuordnungen:
IVssBackupComponents::AddAlternativeLocationMapping
IVssComponent::GetAlternateLocationMapping
IVssComponent::GetAlternateLocationMappingCount
- Differenzierte Dateien:
IVssComponent::AddDifferencedFilesByLastModifyTime
IVssComponent::GetDifferencedFile
IVssComponent::GetDifferencedFilesCount
- Teildateien:
IVssComponent::AddPartialFile
IVssComponent::GetPartialFile
IVssComponent::GetPartialFileCount
- Gerichtete Ziele:
IVssComponent::AddDirectedTarget
IVssComponent::GetDirectedTarget
IVssComponent::GetDirectedTargetCount
- Neue Ziele:
IVssBackupComponents::AddNewTarget
IVssComponent::GetNewTarget
IVssComponent::GetNewTargetCount
Wenn ein Anforderer über die IVssBackupComponents-Schnittstelle auf diese Features für eine Unterkomponente zugreift, verwendet er die Komponenteninformationen für die definierende Komponente des Komponentensatzes, aber die Datei- oder Dateisatzinformationen für die Unterkomponente.
Wenn auf die Eigenschaft über die IVssComponent-Schnittstelle zugegriffen werden kann, wird auch die -Instanz verwendet, die der definierenden Unterkomponente entspricht, aber die Datei- oder Dateisatzargumente werden aus der Unterkomponente übernommen.
Angenommen, die Unterkomponente "Jan" (mit dem logischen Pfad "writerData \ Set2") hat eine Datei mit dem Pfad "c: \ fred", der Dateispezifikation * ".dat" und dem rekursiven Flag true muss möglicherweise an einem alternativen Speicherort wiederhergestellt werden.
Wenn dies der Fall wäre, würde ein Anforderer IVssBackupComponents::AddAlternativeLocationMappingaufrufen, wobei er die Informationen von "writerData" (Komponententyp, den Komponentennamen "writeData" und den logischen Pfad "") zusammen mit den Dateisatzinformationen von "Jan" (Pfad "c: \ fly", Dateispezifikation * ".dat" und Rekursion gleich TRUE) verwendet.
Beachten Sie, dass in diesem Fall die Dateisatzinformationen genau mit den Dateisatzinformationen übereinstimmen müssen, die von IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFilesoder IVssCreateWriterMetadata::AddDatabaseLogFiles verwendet werden, um Dateien zu Jan hinzuzufügen.
Wenn ein Writer einer Datei mit dem Pfad "c: \ ethel" und dem Von "Jan" verwalteten Namen "lucy.dat" (mit dem logischen Pfad "writerData Set2") ein gerichtetes Ziel hinzufügen \ möchte, würde er die IVssComponent-Instanz verwenden, die "writerData" entspricht, aber die Dateiinformationen von "Jan".
Implizit eingeschlossene Komponenten im Wiederherstellungssatz
Komponenten, die implizit in eine Sicherung eingeschlossen wurden, können explizit in eine Wiederherstellung eingeschlossen werden, wenn sie für die Wiederherstellung ausgewählt werden können. Wie unter Working with Selectability for Restore and Subcomponents (Arbeiten mit Der Auswählbarkeit für Wiederherstellung und Unterkomponenten)erwähnt, werden diese Komponenten dem Dokument sicherungskomponenten mithilfe der IVssBackupComponents::AddRestoreSubcomponent-Methode hinzugefügt.
Dadurch wird jedoch weder eine neue Instanz der IVssComponent-Schnittstelle erstellt, noch kann auf die Komponente direkt über die IVssBackupComponents-Schnittstelle zugegriffen werden.
Stattdessen muss auf eine Komponente, die explizit für die Wiederherstellung, aber implizit für die Sicherung eingeschlossen ist, über eine Instanz der IVssComponent-Schnittstelle zugegriffen werden, die der Komponente entspricht, die den Komponentensatz definiert hat, dessen Member sie bei der Sicherung war.
Wenn Sie beispielsweise explizit für die Wiederherstellung von "Set1" einschließen möchten, eine Unterkomponente der für die Sicherungskomponente "writerData" auswählbaren Komponente, rufen Sie die IVssComponent::GetRestoreSubcomponent-Methode der Instanz der IVssComponent-Schnittstelle von "writerData" auf.