Share via


在還原期間使用替代位置

要求者不應該或可能無法將檔案從備份媒體還原到其原始位置的原因有很多。 例如,還原方法或目標可能需要這類還原,或目前還原位置可能已佔用且無法寫入。

若要處理這類情況,寫入器可能已定義 替代位置對應,這是用於特殊情況的非標準還原目的地。

與 VSS 搭配使用的替代位置對應一詞不應與 替代路徑一詞混淆。 替代位置對應只會在還原作業期間使用,並參考還原作業的替代目的地。 替代路徑只會在備份作業期間使用,並參考要備份的來源替代來源。

若要在還原期間使用替代位置對應,要求者會執行下列 (通常會遵循 PreRestore 事件產生) :

  1. 使用擷取預存寫入器取得的 IVssExternerWriterMetadata 介面實例,要求者會使用 IVssExternateLocationMapping 方法取得寫入器的替代位置對應做為 IVssWMFiledesc 介面的實例。

    注意

    要求者使用 IVssExternateWriterMetadata::GetAlternateLocationMapping,而不是 IVssComponent::GetAlternateLocationMapping。 前者會傳回可供要求者使用的替代位置對應。 後者用來指出要求者實際使用的替代位置對應。

     

  2. 呼叫 IVssExternerWriterMetadata::GetAlternateLocationMapping會傳回IVssWMFiledesc介面的實例。 此實例包含檔案集資訊—IVssWMFiledesc::GetPath所指定的路徑,這是透過IVssWMFiledesc::GetFilespec傳回的檔案規格, 以及從IVssWMFiledesc::GetRecursive取得的遞迴旗標—比對使用IVssCreateWriterMetadata::AddDatabaseFiles、IVssCreateWriterMetadata::AddDatabaseLogFilesIVssCreateWriterMetadata::AddFilesToFileGroup所新增 (的其中一個檔案集) 寫入器所管理的其中一個元件。

    IVssWMFiledesc::GetAlternateLocation傳回的值是這個檔案集的替代位置對應。

  3. 替代位置對應不包含元件資訊,因此必須比較檔案集資訊 (路徑、檔案規格和遞迴旗標,) 呼叫寫入器元件所包含的 IVssExternerMetadata::GetAlternateLocationMapping 來取得。

    您可以逐一查看寫入器的元件並呼叫IVssExatingWriterMetadata::GetComponent 來取得 IVssWMComponent介面的實例,並使用IVssWMComponent::GetFile取得包含元件檔案集資訊的IVssWMFiledesc實例,以找到這項資訊。

    IVssWMFiledesc:GetAlternateLocation取得之 IVssWMFiledesc 實例所傳回的檔案集資訊時,找到使用特定替代位置對應管理檔案的元件。

  4. 找到元件之後,要求者可以執行下列動作來判斷應該使用替代位置對應的條件:

  5. 透過這項資訊,要求者可以根據元件來判斷它是否需要將指定元件的指定檔案集還原至替代位置對應所定義的目的地。

  6. 使用替代位置對應時,要求者會遵守檔案集的檔案描述元和遞迴旗標,並使用替代位置對應所提供的路徑。

    要求者指出它已在還原作業期間使用替代位置對應,方法是呼叫 IVssBackupComponents::AddAlternativeLocationMapping 與檔案集的預設位置資訊、所使用的替代還原目的地,以及元件名稱。

    如果檔案集是由備份中明確包含的元件所管理,則會使用該元件名稱。 如果檔案集是由備份中隱含包含的元件所管理,則所使用的名稱將是定義元件集的元件集,而管理檔集的元件是子元件。

寫入器會呼叫 IVssComponent::GetAlternateLocationMapping,確認檔案集是否從其中一個元件還原到替代位置對應。