元件的邏輯路徑
邏輯路徑 是用來將寫入器所管理的元件組織成定義完善的群組。
邏輯路徑類似于傳統檔案路徑的結構,使用反斜線 「\」 來分隔路徑中的元素。 不同于檔案路徑,邏輯路徑的根目錄是 Null,而不是 「\」。
邏輯路徑會以 Null終止的字串表示,而且路徑可以包含的字元沒有其他限制。
邏輯路徑最重要的用法是在定義 元件集中,其中一個可選取元件備份或還原作業中的 明確元件 需要包含一些其他元件, (子 元件) 。 元件集定義元件的邏輯路徑是其子元件之邏輯路徑的父系,且:
- 子元件必須共用為根路徑,該根路徑是定義元件集之可選取元件的邏輯路徑。
- Null的根路徑有效。
- 定義可選取元件的名稱必須是元件集之每個不可選取子元件的根路徑之後的第一個邏輯路徑元素。
- 元件集可以是巢狀的。
- 邏輯路徑和元件名稱的組合在 寫入器類別的所有實例上必須是唯一的。
下列定義邏輯路徑結構的寫入 器 MyWriter 假設範例說明邏輯路徑。
元件名稱 | 邏輯路徑 | 可選取進行備份 |
---|---|---|
「可執行檔」 | "" | N |
「ConfigFiles」 | 「可執行檔」 | N |
「LicenseInfo」 | "" | Y |
"Security" | "" | Y |
「UserInfo」 | "Security" | N |
「Certificates」 | "Security" | N |
「writerData」 | "" | Y |
「Set1」 | 「writerData」 | N |
「Jan」 | 「writerData\Set1」 | N |
「Dec」 | 「writerData\Set1」 | N |
「Set2」 | 「writerData」 | N |
「Jan」 | 「writerData\Set2」 | N |
「Dec」 | 「writerData\Set2」 | N |
「Query」 | 「writerData\QueryLogs」 | N |
「Usage」 | 「writerData」 | Y |
「Jan」 | 「writerData\Usage」 | N |
「Dec」 | 「writerData\Usage」 | N |
請注意,「可執行檔」和「ConfigFile」元件具有父子關聯性,但兩者都不可選取。 因此,它們不會形成元件集。 每當寫入 器 MyWriter 備份或還原時,這兩個元件都必須 明確包含在 作業中。
元件 「LicenseInfo」 無法選取上階或子系。 它可以明確包含在備份或還原作業中,視要求者決定。
元件 「Security」 會定義簡單的元件集,其中不包含任何元件集。
元件 「writerData」 會定義元件集,其中包含具有數個定義完善的邏輯路徑階層之元件的複雜集合。
一個子元件「使用方式」是可選取的,並定義元件集。
數個元件具有相同的名稱,並以其邏輯路徑加以區別。 不可選取元件 「Dec」 和 「Jan」 的實例存在於元件不可選取的元件 「Set1」 和 「Set2」 下,以及可選取的子元件 「Usage」 下。
如果元件 「writerData」 明確包含在備份或還原中,則其所有子元件,即使是在「使用量」所定義的巢狀元件集中,也會隱含地包含在作業中。
如果 「writerData」 所定義的元件集未明確包含在備份或還原中,元件 「Set1」、「Set2」 和 「QueryLogs」 ) (及其子元件 「Dec」 和 「Jan」 實例將不會隱含地包含在備份或還原作業中。
不過,即使作業中未包含 「writerData」,元件「使用量」仍可選取,而且仍可明確包含在備份或還原作業中。 如果是,則會隱含其子元件 「Jan」 和 「Dec」。
其他值得注意的點:
- 可選取的元件 「LicenseInfo」 和 「writerData」 和不可選取的元件 「可執行檔」 全都位於 MyWriter邏輯路徑階層中的相同層級:全都具有相同的 Null 或 「」 邏輯路徑。
- 如果備份中明確包含可選取的父 (「writerData」,則備份中不應明確包含可選取的元件「使用量」) 。
- 定義元件集的元件可能只是基於組織理由而存在。 例如,「writerData」 或 「Usage」 元件或兩者可能都是空的;也就是說,沒有使用IVssCreateWriterMetadata::AddFilesToFileGroup、IVssCreateWriterMetadata::AddDatabaseFiles或IVssCreateWriterMetadata::AddDatabaseLogFiles方法新增至檔案集。 元件仍會定義元件集。