復元中の別の場所の操作
リクエスターがバックアップ メディアから元の場所にファイルを復元できない、または復元できない理由はたくさんあります。 たとえば、復元方法やターゲットでは、このような復元が必要な場合や、現在の復元場所が占有され、書き込み不可能な場合があります。
このような場合に対処するために、ライターは、特別な状況に使用する非標準の復元先である 代替の場所マッピングを定義している可能性があります。
VSS で使用される代替場所マッピングという用語は、 代替パスという用語と混同しないでください。 代替の場所マッピングは、復元操作中にのみ使用され、復元操作の代替の宛先を参照します。 代替パスは、バックアップ操作中にのみ使用され、バックアップ元の代替ソースを参照します。
復元中に別の場所マッピングを使用するには、リクエスターは次の操作を行います (通常は PreRestore イベントの生成に従います)。
リクエスターは、格納されたライターを取得して取得した IVssExamineWriterMetadata インターフェイスのインスタンスを使用して、 IVssExamineWriterMetadata::GetAlternateLocationMapping メソッドを使用して、ライターの代替の場所マッピングを IVssWMFiledesc インターフェイスのインスタンスとして取得します。
注意
リクエスターは IVssComponent::GetAlternateLocationMapping ではなく、IVssExamineWriterMetadata::GetAlternateLocationMapping を使用します。 前者は、リクエスターが使用できる代替の場所マッピングを返します。 後者は、リクエスターによって実際に使用される代替の場所マッピングを示すために使用されます。
IVssExamineWriterMetadata::GetAlternateLocationMapping の呼び出しは、IVssWMFiledesc インターフェイスのインスタンスを返します。 このインスタンスには、ファイル セット情報 ( IVssWMFiledesc::GetPath で指定されたパス) が含まれています。 IVssWMFiledesc::GetFilespec、および IVssWMFiledesc::GetRecursive から取得された再帰フラグを介して返されるファイル仕様。追加されたファイル セットの 1 つと一致します ( IVssCreateWriterMetadata::AddDatabaseFiles、 IVssCreateWriterMetadata::AddDatabaseLogFiles、または IVssCreateWriterMetadata::AddFilesToFileGroup を使用)。) をライターによって管理されるコンポーネントの 1 つに追加します。
IVssWMFiledesc::GetAlternateLocation によって返される値は、このファイル セットの代替の場所マッピングです。
別の場所マッピングにはコンポーネント情報が含まれていないため、 IVssExamineWriterMetadata::GetAlternateLocationMapping を呼び出して取得したファイル セット情報 (パス、ファイル指定、再帰フラグ) とライターのコンポーネントに含まれるファイル セット情報を比較する必要があります。
この情報は、ライターのコンポーネントを反復処理し、 IVssExamineWriterMetadata::GetComponent を呼び出して IVssWMComponent インターフェイスのインスタンスを取得し、 IVssWMComponent::GetFile を使用して、コンポーネント ファイル セット情報を含む IVssWMFiledesc インスタンスを取得することで確認できます。
IVssExamineWriterMetadata::GetComponent および IVssWMComponent::GetFile のインスタンスから取得した IVssWMFiledesc のインスタンスによって返されるファイル セット情報が、IVssWMFiledesc::GetAlternateLocation から派生した IVssWMFiledesc インスタンスから取得したのと一致する場合、特定の代替場所マッピングを持つファイルを管理するコンポーネントが見つかりました。
コンポーネントを見つけていると、リクエスターは次の操作を行って、代替ロケーション マッピングを使用する条件を決定できます。
IVssExamineWriterMetadata::GetRestoreMethod を呼び出すことによって取得されるコンポーネントの restore メソッドを調べる。
IVssComponent::GetRestoreTarget を呼び出して、復元ターゲットが復元メソッドをオーバーライドするかどうかを確認します。
ライター メタデータ ドキュメントで見つかったコンポーネントが バックアップに明示的に含まれていた 場合、 IVssComponent インターフェイスのインスタンスはそのコンポーネントに対応します。 コンポーネントが バックアップに暗黙的に含まれていた 場合、 IVssComponent のインスタンスは、ライター メタデータ ドキュメント内のコンポーネントがサブコンポーネントであるコンポーネント セットを定義するコンポーネントに対応します。
この情報を使用すると、要求者は、特定のコンポーネントの特定のファイル セットを、代替の場所マッピングによって定義された宛先に復元する必要があるかどうかをコンポーネントごとに判断できます。
代替ロケーション・マッピングを使用する場合、リクエスターはファイル・セットのファイル記述子および再帰的フラグを考慮し、代替ロケーション・マッピングによって提供されるパスを使用します。
リクエスターは、 IVssBackupComponents::AddAlternativeLocationMapping をファイル セットの既定の場所情報、使用される代替復元先、およびコンポーネント名と共に呼び出すことによって、復元操作中に代替の場所マッピングを使用したことを示します。
ファイル セットが、バックアップに明示的に含まれていたコンポーネントによって管理されていた場合は、そのコンポーネント名が使用されます。 バックアップに暗黙的に含まれていたコンポーネントによってファイル セットが管理されていた場合、使用される名前は、ファイル セットを管理するコンポーネントがサブコンポーネントであるコンポーネント セットを定義するコンポーネントの名前になります。
ライターは、 IVssComponent::GetAlternateLocationMapping を呼び出して、いずれかのコンポーネントのファイル セットが別の場所マッピングに復元されたかどうかを確認します。