Définition des composants par les enregistreurs
Les composants sont définis par et instanciés par les rédacteurs dans leur document de métadonnées writer en réponse à un événement Identifier au début d’une opération de sauvegarde (voir Vue d’ensemble de l’initialisation de sauvegarde) lorsque le document de métadonnées writer est rempli.
Lors de la création d’un composant dans son document de métadonnées writer, à l’aide de IVssCreateWriterMetadata et IVssCreateWriterMetadata::AddComponent, un writer doit spécifier :
- Si le composant peut être sélectionné pour la sauvegarde
- Type de composant
- Un nom de composant (qui doit être unique non seulement au sein d’un writer instance donné, mais dans toutes les instances de writer)
- Si le composant a des métadonnées spécifiques à l’enregistreur qui lui sont associées
- Indique si l’enregistreur nécessite une notification après une sauvegarde réussie
Les enregistreurs peuvent éventuellement spécifier :
- Chemin logique d’un composant (qui doit être unique non seulement au sein d’un writer instance donné, mais dans toutes les instances de writer)
- Description d’un composant (ou légende)
- Icône à utiliser avec les interfaces utilisateur pour indiquer le composant
Il n’est pas nécessaire qu’un composant contienne réellement des fichiers. Ce type de composant vide ou « factice » peut être utile dans l’organisation des composants. Un tel composant peut être utilisé pour définir un jeu de composants et le composant d’un enregistreur (voir Chemin d’accès logique des composants).
Configuration de l’organisation des composants
La définition de la sélectabilité d’un composant (sa capacité de sélection pour la sauvegarde et sa capacité de sélection pour la restauration) et ses chemins logiques permet à un enregistreur d’exiger ou de rendre facultative l’inclusion de certains composants dans une opération de sauvegarde ou de restauration, et de regrouper des composants dans des jeux de composants avec un composant sélectionnable agissant comme point d’entrée pour l’ensemble du groupe.
L’appartenance à ces regroupements détermine les composants qui seront utilisés lors des opérations de sauvegarde et de restauration. L’utilisation de « sélectionnable » pour signifier qu’il est sélectionnable pour l’opération de sauvegarde et sélectionnable pour la restauration pour l’opération de restauration, les développeurs doivent comprendre que :
- Si des composants gérés par un writer donné sont sauvegardés, un demandeur doit inclure explicitement tous les composants non sélectionnables sans ancêtres sélectionnables dans son chemin logique vers le document composants de sauvegarde et sauvegarder et restaurer ces composants en tant que groupe.
- Un demandeur a la possibilité d’ajouter explicitement des composants sélectionnables au document composants de sauvegarde pendant les opérations de sauvegarde et de restauration ; une fois ajouté, le composant doit être sauvegardé ou restauré.
- Si un composant est sélectionnable, le composant et tous ses sous-composants (tels que définis par des chemins logiques ) forment un ensemble de composants, qui peut être traité comme une unité unique pouvant éventuellement participer aux opérations de sauvegarde et de restauration.
- Un demandeur n’ajoute jamais explicitement un composant non sélectionnable avec des ancêtres sélectionnables, un sous-composant dans un ensemble de composants, à son document composants de sauvegarde pendant les opérations de sauvegarde et de restauration. Ces composants doivent être implicitement inclus si leur ancêtre sélectionnable est explicitement ajouté, auquel cas ils doivent être sauvegardés ou restaurés (voir Utilisation des composants par le demandeur).
- Un composant sélectionnable avec un ancêtre sélectionnable est toujours un sous-composant (membre d’un jeu de composants) et peut être implicitement inclus si son ancêtre sélectionnable est explicitement inclus dans l’opération. Dans ce cas, ses informations ne sont pas ajoutées au document Composants de sauvegarde. Si son ancêtre sélectionnable n’est pas inclus dans l’opération, le composant peut être explicitement sélectionné pour l’inclure dans l’opération, auquel cas ses informations sont incluses dans le document Composants de sauvegarde.
- Un sous-composant implicitement inclus dans une sauvegarde peut être explicitement inclus dans une opération de restauration, quel que soit le status de n’importe quel ancêtre sélectionnable, s’il est sélectionnable pour la restauration. Tout sous-composant pouvant être sélectionné pour la restauration inclus pendant une opération de restauration doit avoir ses informations ajoutées au document Composants de sauvegarde.
- Un enregistreur pour lequel aucun composant n’a été explicitement ajouté au document des composants de sauvegarde avant la génération des événements PrepareForBackup et PreRestore ne recevra pas d’autres événements VSS.
Pour plus d’informations, consultez Utilisation de la possibilité de sélection et des chemins logiques.
Ajout de fichiers à un composant
Un composant contient des informations de fichier sous la forme d’un jeu de fichiers qui contient :
- Répertoire racine des fichiers dans le composant.
- Spécification de fichier pour les fichiers dans le composant.
- Indicateur qui indique si la spécification du composant est récursive.
Selon le type de composant, qui peut être une base de données ou un groupe de fichiers, et (dans le cas des composants de base de données) si les fichiers à charger sont des fichiers de données ou des fichiers journaux, un writer appelle IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFiles ou IVssCreateWriterMetadata::AddDatabaseLogFiles pour ajouter un jeu de fichiers.
Lorsque vous utilisez ces fonctions, vous devez spécifier les fichiers à ajouter au jeu de fichiers comme suit :
- wszPath : il s’agit du chemin d’accès au répertoire qui contient les fichiers à ajouter au jeu de fichiers. Si le paramètre bRecursive a la valeur true, le paramètre wszPath spécifie une hiérarchie de répertoires à parcourir de manière récursive, et tous les répertoires doivent être recréés, y compris les répertoires vides.
- wszFilespec : cette chaîne spécifie les fichiers de chaque répertoire à ajouter au jeu de fichiers.
Par exemple, supposons que la structure de répertoires suivante existe :
- C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt C:\\Directory1\\Directory2\\File1.txt C:\\Directory1\\Directory2\\File2.txt C:\\Directory1\\Directory3\\
Si l’enregistreur spécifie « C:\Directory1 » pour wszPath, « File1.* » pour wszFilespec et true pour bRecursive, le demandeur doit inclure les fichiers suivants :
- C:\\Directory1\\File1.txt C:\\Directory1\\Directory2\\File1.txt
Si l’enregistreur spécifie à la place « C:\Directory1 » pour wszPath, « * » pour wszFilespec et true pour bRecursive, le demandeur doit inclure les fichiers suivants :
- C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt C:\\Directory1\\Directory2\\File1.txt C:\\Directory1\\Directory2\\File2.txt
Si l’enregistreur spécifie « C:\Directory1 » pour wszPath, « * » pour wszFilespec et false pour bRecursive, le demandeur doit inclure les fichiers suivants :
- C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt
Dans tous les exemples précédents, chaque fois que l’enregistreur spécifie true pour bRecursive, le répertoire vide C:\Directory1\Directory3\ doit être recréé.
Pour un jeu de fichiers ajouté à un composant de groupe de fichiers, dans les cas où les fichiers actuellement sur disque ne se trouvent pas dans ce que l’enregistreur considère comme étant l’emplacement approprié ou par défaut, un enregistreur a la possibilité d’ajouter un autre chemin. Dans ce cas, la définition du chemin d’accès du jeu de fichiers contient l’emplacement normal des fichiers et l’emplacement où les fichiers doivent être restaurés, tandis que le chemin d’accès alternatif contient l’emplacement actuel des fichiers à sauvegarder.
Tous les fichiers du jeu de fichiers doivent exister au moment de la sauvegarde. Les demandeurs doivent supposer que tous les fichiers répertoriés dans le jeu de fichiers sont requis pour la sauvegarde et échoueront si des fichiers sont manquants. Notez que lorsque « * » est spécifié pour le paramètre wszFilespec , il peut correspondre à zéro ou plusieurs fichiers.
Notez que ces attributs de document de métadonnées writer en tant que mappages d’emplacements alternatifs, fichiers explicitement inclus et exclus et méthodes de restauration sont définis au niveau de l’enregistreur, et non au niveau du composant. (Pour plus d’informations, consultez Utilisation du document de métadonnées writer.)
Définition de composant pour les opérations de sauvegarde et de restauration
Les opérations de restauration et de sauvegarde génèrent nécessairement un événement Identifier, et pour les sauvegardes et les restaurations, il est géré par la même méthode CVssWriter::OnIdentify .
Pendant les opérations de sauvegarde, les demandeurs utilisent les informations retournées par les méthodes CVssWriter::OnIdentify d’un writer pour déterminer quels enregistreurs sont présents sur le système, puis pour déterminer les fichiers à sauvegarder.
Pendant les opérations de restauration, les informations retournées par l’événement CVssWriter::OnIdentify d’un writer sont utilisées uniquement pour établir l’identité et la status des rédacteurs actuellement présents sur le système ; les informations de spécification de fichier générées lors d’une restauration ne sont pas utilisées. Au lieu de cela, les documents de métadonnées writer stockés au moment de la sauvegarde sont utilisés pour obtenir ces données.
Une fois générées lors d’une opération de sauvegarde, les informations du composant writer, ainsi que le reste des informations de l’enregistreur, sont enregistrées pour être récupérées pour prendre en charge les opérations de restauration. Il incombe généralement au demandeur de stocker ces informations.