Uso di percorsi alternativi durante il ripristino
Esistono molti motivi per cui un richiedente non deve, o meno, essere in grado di ripristinare i file dal supporto di backup al percorso originale. Ad esempio, un metodo di ripristino o una destinazione possono richiedere un ripristino di questo tipo o la posizione di ripristino corrente può essere occupata e non scrivibile.
Per gestire questi casi, un writer può avere definito un mapping di percorso alternativo, una destinazione di ripristino non standard da usare per circostanze speciali.
Il termine mapping alternativo della posizione, come usato con VSS, non deve essere confuso con il termine percorso alternativo. I mapping di percorsi alternativi vengono usati solo durante le operazioni di ripristino e fanno riferimento a una destinazione alternativa per le operazioni di ripristino. I percorsi alternativi vengono usati solo durante le operazioni di backup e fanno riferimento a un'origine alternativa da cui eseguire il backup.
Per usare mapping di percorsi alternativi durante il ripristino, un richiedente eseguirà le operazioni seguenti (in genere seguendo la generazione di un evento PreRestore ):
Usando un'istanza dell'interfaccia IVssExamineWriterMetadata ottenuta recuperando un writer archiviato, un richiedente usa il metodo IVssExamineWriterMetadata::GetAlternateLocationMapping per ottenere i mapping di percorsi alternativi di un writer come istanze dell'interfaccia IVssWMFiledesc .
Nota
Il richiedente usa IVssExamineWriterMetadata::GetAlternateLocationMapping, non IVssComponent::GetAlternateLocationMapping. Il precedente restituisce tali mapping di percorsi alternativi disponibili per l'uso da parte di un richiedente. Quest'ultimo viene usato per indicare i mapping di posizioni alternativi effettivamente usati da un richiedente.
La chiamata all'interfaccia IVssExamineWriterMetadata::GetAlternateLocationMapping restituisce un'istanza dell'interfaccia IVssWMFiledesc . Questa istanza contiene informazioni sul set di file: un percorso specificato da IVssWMFiledesc::GetPath, una specifica di file restituita tramite IVssWMFiledesc::GetFilespec e un flag di ricorsione ottenuto da IVssWMFiledesc::GetRecursive, corrispondente a uno dei set di file aggiunti (usando IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles o IVsCreateWriterMetadata:: AddFilesToFileGroup ) a uno dei componenti gestiti dal writer.
Il valore restituito da IVssWMFiledesc::GetAlternateLocation è il mapping del percorso alternativo per questo set di file.
I mapping di percorsi alternativi non contengono informazioni sui componenti, pertanto sarà necessario confrontare le informazioni sul set di file (percorso, specifica file e flag di ricorsione) ottenute chiamando IVssExamineWriterMetadata::GetAlternateLocationMapping a tale contenuto dai componenti del writer.
Queste informazioni sono disponibili eseguendo l'iterazione sui componenti del writer e chiamando IVssExamineWriterMetadata::GetComponent per ottenere un'istanza dell'interfaccia IVssWMComponent e usare IVssWMComponent::GetFile per ottenere un'istanza IVssWMFiledesc contenente le informazioni sul set di file componente.
Quando le informazioni sul set di file restituite dall'istanza di IVssWMFiledesc ottenute da IVssExamineWriterMetadata::GetComponent e IVssWMComponent::GetFile corrispondenze ottenute dall'istanza IVssWMFiledesc derivata da IVssWMFiledesc :: GetAlternateLocation, il componente che gestisce i file con il mapping alternativo specifico è stato trovato.
Se si trova il componente, il richiedente può determinare le condizioni in cui deve essere usato un mapping di percorso alternativo eseguendo le operazioni seguenti:
Esaminando il metodo di ripristino del componente, ottenuto chiamando IVssExamineWriterMetadata::GetRestoreMethod.
Verifica se una destinazione di ripristino esegue l'override del metodo di ripristino chiamando IVssComponent::GetRestoreTarget.
Se il componente trovato nel documento metadati writer era stato incluso in modo esplicito nel backup, l'istanza dell'interfaccia IVssComponent corrisponderà a tale componente. Se il componente era stato incluso in modo implicito nel backup, l'istanza di IVssComponent corrisponderà al componente che definisce il set di componenti di cui il componente nel documento metadati writer è un sottocomponente.
Con queste informazioni, il richiedente può determinare in base a un componente se deve ripristinare un determinato set di file di un determinato componente a una destinazione definita dal mapping di percorso alternativo.
Quando si usa un mapping di percorso alternativo, il richiedente rispetta il descrittore del file del set di file e il flag ricorsivo e usa il percorso fornito dal mapping percorso alternativo.
Il richiedente indica che ha usato un mapping di percorso alternativo durante un'operazione di ripristino chiamando IVssBackupComponents::AddAlternativeLocationMapping con le informazioni predefinite sul percorso del set di file, la destinazione di ripristino alternativa usata e un nome del componente.
Se il set di file è stato gestito da un componente incluso in modo esplicito nel backup, verrà usato il nome del componente. Se il set di file è stato gestito da un componente incluso in modo implicito nel backup, il nome usato sarà quello del componente che definisce il set di componenti di cui il componente che gestisce il set di file è un sottocomponente.
Gli autori verificano se i set di file da uno dei relativi componenti sono stati ripristinati in un mapping di percorso alternativo chiamando IVssComponent::GetAlternateLocationMapping.