Utilisation d’autres emplacements pendant la restauration
Il existe de nombreuses raisons pour lesquelles un demandeur ne doit pas, ou ne peut pas, être en mesure de restaurer des fichiers à partir du support de sauvegarde vers leur emplacement d’origine. Par exemple, une méthode ou une cible de restauration peut nécessiter une telle restauration, ou l’emplacement de restauration actuel peut être occupé et inscriptible.
Pour gérer de tels cas, un writer peut avoir défini un autre mappage d’emplacement, une destination de restauration non standard à utiliser dans des circonstances particulières.
Le terme mappage d’emplacement alternatif, tel qu’utilisé avec VSS, ne doit pas être confondu avec le terme chemin d’accès alternatif. Les mappages d’emplacements alternatifs sont utilisés uniquement pendant les opérations de restauration et font référence à une autre destination pour les opérations de restauration. Les chemins d’accès alternatifs sont utilisés uniquement pendant les opérations de sauvegarde et font référence à une autre source à partir de laquelle la sauvegarde doit être effectuée.
Pour utiliser d’autres mappages d’emplacements pendant la restauration, un demandeur effectue les opérations suivantes (généralement après la génération d’un événement PreRestore ) :
À l’aide d’une instance de l’interface IVssExamineWriterMetadata obtenue en récupérant un writer stocké, un demandeur utilise la méthode IVssExamineWriterMetadata::GetAlternateLocationMapping pour obtenir les mappages d’emplacements alternatifs d’un writer en tant qu’instances de l’interface IVssWMFiledesc.
Notes
Le demandeur utilise IVssExamineWriterMetadata::GetAlternateLocationMapping, et non IVssComponent::GetAlternateLocationMapping. Le premier retourne les mappages d’emplacements alternatifs disponibles pour une utilisation par un demandeur. Ce dernier est utilisé pour indiquer les mappages d’emplacements alternatifs réellement utilisés par un demandeur.
L’appel à IVssExamineWriterMetadata::GetAlternateLocationMapping retourne une instance de l’interface IVssWMFiledesc. Cette instance contient des informations sur le jeu de fichiers: un chemin spécifié par IVssWMFiledesc::GetPath, une spécification de fichier retournée via IVssWMFiledesc::GetFilespec, et un indicateur de récursivité obtenu à partir de IVssWMFiledesc::GetRecursive, correspondant à l’un des jeux de fichiers ajoutés (à l’aide de IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles, ou IVssCreateWriterMetadata:: AddFilesToFileGroup) à l’un des composants gérés par l’enregistreur.
La valeur retournée par IVssWMFiledesc::GetAlternateLocation est le mappage d’emplacement de remplacement pour ce jeu de fichiers.
Les mappages d’emplacements alternatifs ne contiennent pas d’informations sur les composants. Il est donc nécessaire de comparer les informations de jeu de fichiers (chemin d’accès, spécification de fichier et indicateur de récursivité) obtenues en appelant IVssExamineWriterMetadata::GetAlternateLocationMapping à celles contenues par les composants de l’enregistreur.
Pour obtenir ces informations, vous pouvez effectuer une itération sur les composants de l’enregistreur et appeler IVssExamineWriterMetadata::GetComponent pour obtenir une instance de l’interface IVssWMComponent et utiliser IVssWMComponent::GetFile pour obtenir un IVssWMFiledesc instance contenant les informations du jeu de fichiers de composants.
Lorsque les informations de jeu de fichiers retournées par l’instance de IVssWMFiledesc obtenues à partir de IVssExamineWriterMetadata::GetComponent et IVssWMComponent::GetFile correspondent à celles obtenues à partir du instance IVssWMFiledesc::GetAlternateLocation, le composant gérant les fichiers avec le mappage d’emplacement alternatif spécifique a été trouvé.
Après avoir localisé le composant, le demandeur peut déterminer les conditions dans lesquelles un autre mappage d’emplacement doit être utilisé en procédant comme suit :
Examen de la méthode de restauration du composant, obtenue en appelant IVssExamineWriterMetadata::GetRestoreMethod.
Vérifiez si une cible de restauration remplace la méthode de restauration, en appelant IVssComponent::GetRestoreTarget.
Si le composant trouvé dans le document de métadonnées writer avait été explicitement inclus dans la sauvegarde, la instance de l’interface IVssComponent correspond à ce composant. Si le composant avait été implicitement inclus dans la sauvegarde, le instance d’IVssComponent correspond au composant définissant le jeu de composants dont le composant dans le document de métadonnées writer est un sous-composant.
Avec ces informations, le demandeur peut déterminer, composant par composant, s’il doit restaurer un jeu de fichiers donné d’un composant donné vers une destination définie par le mappage d’emplacement de remplacement.
Lors de l’utilisation d’un autre mappage d’emplacement, le demandeur respecte le descripteur de fichiers et l’indicateur récursif du jeu de fichiers et utilise le chemin d’accès fourni par le mappage d’emplacement de remplacement.
Le demandeur indique qu’il a utilisé un autre mappage d’emplacement pendant une opération de restauration en appelant IVssBackupComponents::AddAlternativeLocationMapping avec les informations d’emplacement par défaut du jeu de fichiers, la destination de restauration alternative utilisée et un nom de composant.
Si le jeu de fichiers a été géré par un composant qui a été explicitement inclus dans la sauvegarde, ce nom de composant est utilisé. Si le jeu de fichiers a été géré par un composant qui a été implicitement inclus dans la sauvegarde, le nom utilisé sera celui du composant définissant le jeu de composants dont le composant gérant le jeu de fichiers est un sous-composant.
Les enregistreurs vérifient si les jeux de fichiers de l’un de leurs composants ont été restaurés vers un autre mappage d’emplacement en appelant IVssComponent::GetAlternateLocationMapping.