Definition von Komponenten nach Writern
Komponenten werden von Writern in ihrem Writer-Metadatendokument als Reaktion auf ein Identify-Ereignis zu Beginn eines Sicherungsvorgangs (siehe Übersicht über die Sicherungsinitialisierung) definiert und instanziiert, wenn das Writer-Metadatendokument aufgefüllt wird.
Beim Erstellen einer Komponente in ihrem Writermetadatendokument mit IVssCreateWriterMetadata und IVssCreateWriterMetadata::AddComponent muss ein Writer Folgendes angeben:
- Gibt an, ob die Komponente für die Sicherung ausgewählt werden kann
- Ein Komponententyp
- Ein Komponentenname (der nicht nur innerhalb eines bestimmten Writer-instance, sondern für alle Writer-Instanzen eindeutig sein muss)
- Gibt an, ob der Komponente Writer-spezifische Metadaten zugeordnet sind
- Ob der Writer nach einer erfolgreichen Sicherung eine Benachrichtigung erfordert
Writer können optional Folgendes angeben:
- Logischer Pfad einer Komponente (der nicht nur innerhalb eines bestimmten Writer-instance, sondern über alle Writerinstanzen hinweg eindeutig sein muss)
- Eine Komponentenbeschreibung (oder Untertitel)
- Ein Symbol, das mit GUIs verwendet werden soll, um die Komponente anzugeben
Es ist nicht erforderlich, dass eine Komponente tatsächlich Dateien enthält. Diese Art von leerer oder "Dummy"-Komponente kann beim Organisieren von Komponenten nützlich sein. Eine solche Komponente kann verwendet werden, um einen Komponentensatz und eine Writerkomponente zu definieren (siehe Logische Pfadierung von Komponenten).
Einrichten der Komponentenorganisation
Durch festlegen der Auswählbarkeit einer Komponente (ihrer Auswählbarkeit für die Sicherung und ihrer Auswählbarkeit für die Wiederherstellung) und ihrer logischen Pfade kann ein Writer die Aufnahme bestimmter Komponenten in einen Sicherungs- oder Wiederherstellungsvorgang festlegen oder optional festlegen und Komponenten in Komponentensätze gruppieren, wobei eine auswählbare Komponente als Einstiegspunkt für die gesamte Gruppe fungiert.
Die Mitgliedschaft in diesen Gruppierungen bestimmt, welche Komponenten bei Sicherungs- und Wiederherstellungsvorgängen verwendet werden. Die Verwendung von "selectable" bedeutet, dass für den Sicherungsvorgang wieder auswählbar und für die Wiederherstellung für wiederhergestellt werden kann, sollten Entwickler folgendes verstehen:
- Wenn von einem bestimmten Writer verwaltete Komponenten gesichert werden, muss ein Anforderer explizit alle nicht auswählbaren Komponenten ohne auswählbare Vorgänger in den logischen Pfad zum Dokument Sicherungskomponenten einschließen und diese Komponenten als Gruppe sichern und wiederherstellen.
- Ein Anforderer hat die Möglichkeit, dem Dokument sicherungskomponenten während der Sicherungs- und Wiederherstellungsvorgänge explizit auswählbare Komponenten hinzuzufügen. nach dem Hinzufügen muss die Komponente gesichert oder wiederhergestellt werden.
- Wenn eine Komponente auswählbar ist, bilden die Komponente und alle ihre Unterkomponenten (wie durch logische Pfade definiert) einen Komponentensatz, der als einzelne Einheit behandelt werden kann, die optional an Sicherungs- und Wiederherstellungsvorgängen teilnehmen kann.
- Ein Anforderer fügt während sicherungs- und wiederherstellungsvorgängen niemals explizit eine nicht auswählbare Komponente mit auswählbaren Vorgängern , einem Teilelement in einem Komponentensatz, zu seinem Sicherungskomponentendokument hinzu. Diese Komponenten müssen implizit eingeschlossen werden, wenn ihr auswählbarer Vorgänger explizit hinzugefügt wird. In diesem Fall müssen sie gesichert oder wiederhergestellt werden (siehe Verwendung von Komponenten durch den Anforderer).
- Eine auswählbare Komponente mit einem auswählbaren Vorgänger ist weiterhin eine Unterkomponente (ein Element eines Komponentensatzes) und kann implizit eingeschlossen werden, wenn ihr auswählbarer Vorgänger explizit in den Vorgang einbezogen wird. In diesem Fall werden die zugehörigen Informationen nicht dem Dokument sicherungskomponenten hinzugefügt. Wenn der auswählbare Vorgänger nicht im Vorgang enthalten ist, kann die Komponente explizit für die Aufnahme in den Vorgang ausgewählt werden. In diesem Fall sind ihre Informationen im Dokument Sicherungskomponenten enthalten.
- Eine implizit in eine Sicherung eingeschlossene Unterkomponente kann explizit in einen Wiederherstellungsvorgang einbezogen werden, unabhängig von der status eines auswählbaren Vorgängers, sofern er für die Wiederherstellung ausgewählt werden kann. Alle für die Wiederherstellung auswählbaren Teilkomponenten, die während eines Wiederherstellungsvorgangs enthalten sind, müssen dem Dokument Sicherungskomponenten hinzugefügt werden.
- Ein Writer, dem vor der Generierung von PrepareForBackup - und PreRestore-Ereignissen keine Komponente explizit hinzugefügt wurde, empfängt keine weiteren VSS-Ereignisse.
Weitere Informationen finden Sie unter Arbeiten mit Auswählbarkeit und logischen Pfaden.
Hinzufügen von Dateien zu einer Komponente
Eine Komponente enthält Dateiinformationen in Form eines Dateisatzes , der Folgendes enthält:
- Ein Stammverzeichnis der Dateien in der Komponente.
- Eine Dateispezifikation für die Dateien in der Komponente.
- Ein Flag, das angibt, ob die Spezifikation der Komponente rekursiv ist.
Abhängig vom Komponententyp, der eine Datenbank oder eine Dateigruppe sein kann, und (im Fall von Datenbankkomponenten), ob es sich bei den zu ladenden Dateien um Daten- oder Protokolldateien handelt, ruft ein Writer IVssCreateWriterMetadata::AddFilesToFileGroup, IVsCreateWriterMetadata::AddDatabaseFiles oder IVssCreateWriterMetadata::AddDatabaseLogFiles auf, um einen Dateisatz hinzuzufügen.
Wenn Sie diese Funktionen verwenden, sollten Sie die Dateien angeben, die dem Dateisatz wie folgt hinzugefügt werden sollen:
- wszPath: Dies ist der Pfad zu dem Verzeichnis, das die Dateien enthält, die dem Dateisatz hinzugefügt werden sollen. Wenn der bRecursive-Parameter auf true festgelegt ist, gibt der wszPath-Parameter eine Hierarchie von Verzeichnissen an, die rekursiv durchlaufen werden sollen, und alle Verzeichnisse sollten neu erstellt werden, einschließlich leerer Verzeichnisse.
- wszFilespec: Diese Zeichenfolge gibt die Dateien in jedem Verzeichnis an, die dem Dateisatz hinzugefügt werden sollen.
Angenommen, die folgende Verzeichnisstruktur ist vorhanden:
- C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt C:\\Directory1\\Directory2\\File1.txt C:\\Directory1\\Directory2\\File2.txt C:\\Directory1\\Directory3\\
Wenn der Writer "C:\Directory1" für wszPath, "File1.*" für wszFilespec und true für bRecursive angibt, sollte der Anforderer die folgenden Dateien enthalten:
- C:\\Directory1\\File1.txt C:\\Directory1\\Directory2\\File1.txt
Wenn der Writer stattdessen "C:\Directory1" für wszPath, "*" für wszFilespec und true für bRecursive angibt, sollte der Anforderer die folgenden Dateien einschließen:
- C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt C:\\Directory1\\Directory2\\File1.txt C:\\Directory1\\Directory2\\File2.txt
Wenn der Writer "C:\Directory1" für wszPath, "*" für wszFilespec und false für bRecursive angibt, sollte der Anforderer die folgenden Dateien einschließen:
- C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt
In allen vorherigen Beispielen sollte das leere Verzeichnis C:\Directory1\Directory3\ neu erstellt werden, wenn der Writer true für bRecursive angibt.
Für einen Dateisatz, der einer Dateigruppenkomponente hinzugefügt wurde, hat ein Writer die Möglichkeit, einen alternativen Pfad hinzuzufügen, wenn sich die derzeit auf dem Datenträger befindlichen Dateien nicht in dem befinden, was der Writer als geeigneten oder Standardspeicherort betrachten würde. In diesen Fällen enthält die Pfaddefinition des Dateisatzes den normalen Speicherort der Dateien und den Ort, an dem Dateien wiederhergestellt werden sollen, während der alternative Pfad den aktuellen Speicherort der zu sichernden Dateien enthält.
Alle Dateien im Dateisatz müssen zum Zeitpunkt der Sicherung vorhanden sein. Anforderer müssen davon ausgehen, dass alle im Dateisatz aufgeführten Dateien für die Sicherung erforderlich sind und die Sicherung fehlschlägt, wenn Dateien fehlen. Beachten Sie, dass, wenn "*" für den wszFilespec-Parameter angegeben wird, mit null oder mehr Dateien übereinstimmen kann.
Beachten Sie, dass solche Attribute des Writermetadatendokuments als alternative Speicherortzuordnungen, explizit eingeschlossene und ausgeschlossene Dateien und Wiederherstellungsmethoden auf writer-Ebene und nicht auf Komponentenebene festgelegt werden. (Weitere Informationen finden Sie unter Arbeiten mit dem Writer-Metadatendokument.)
Komponentendefinition für Sicherungs- und Wiederherstellungsvorgänge
Sowohl Wiederherstellungs- als auch Sicherungsvorgänge generieren notwendigerweise ein Identify-Ereignis, das sowohl für Sicherungen als auch für Wiederherstellungen von derselben CVssWriter::OnIdentify-Methode verarbeitet wird.
Bei Sicherungsvorgängen verwenden Die Anforderer die von den CVssWriter::OnIdentify-Methoden eines Writers zurückgegebenen Informationen, um zu bestimmen, welche Writer auf dem System vorhanden sind, und bestimmen dann, welche ihrer Dateien gesichert werden sollen.
Bei Wiederherstellungsvorgängen werden die vom CVssWriter::OnIdentify-Ereignis eines Writer zurückgegebenen Informationen nur verwendet, um die Identität und status von Writern festzulegen, die derzeit auf dem System vorhanden sind. Die während einer Wiederherstellung generierten Dateispezifikationsinformationen werden nicht verwendet. Stattdessen werden zum Zeitpunkt der Sicherung gespeicherte Writermetadatendokumente verwendet, um diese Daten abzurufen.
Nach der Generierung während eines Sicherungsvorgangs werden die Writer-Komponenteninformationen zusammen mit den restlichen Writerinformationen gespeichert, um zur Unterstützung von Wiederherstellungsvorgängen abgerufen zu werden. Es liegt in der Regel in der Verantwortung des Anforderers, diese Informationen zu speichern.