コンポーネントの論理パス

論理パス は、ライターによって管理されるコンポーネントを適切に定義されたグループに整理するために使用されます。

論理パスは、構造が従来のファイル パスに似ています。パス内の要素を区切るために円記号 "\" を使用します。 ファイル パスとは異なり、論理パスのルートは "\" ではなく NULL です

論理パスは NULL で終わる文字列として表され、パスに含めることができる文字に他の制限はありません。

論理パスの最も重要な用途は、 コンポーネント セットを定義することです。ここで、1 つの選択可能なコンポーネントのバックアップまたは復元操作に 明示的なコンポーネントを含める 場合は、他のコンポーネント (サブコンポーネント) を多数含める必要があります。 コンポーネント セットの定義コンポーネントの論理パスは、そのサブコンポーネントの論理パスの親であり、次のようになります。

  • サブコンポーネントは、コンポーネント セットを定義する選択可能なコンポーネントの論理パスをルート パスとして共有する必要があります。
  • NULL のルート パスが有効です。
  • 定義する選択可能コンポーネントの名前は、コンポーネント・セットの選択できないサブコンポーネントごとに、ルート・パスの後の最初の論理パス要素でなければなりません。
  • コンポーネント セットは入れ子にすることができます。
  • 論理パスとコンポーネント名の組み合わせは、 ライター クラスのすべてのインスタンスで一意である必要があります。

以下に定義されている論理パス構造を持つライター MyWriter の架空の例は、論理パスを示しています。

コンポーネント名 論理パス バックアップ用に選択可能
"実行可能ファイル" "" ×
"ConfigFiles" "実行可能ファイル" ×
"LicenseInfo" "" Y
"Security" "" Y
"UserInfo" "Security" ×
"証明書" "Security" ×
"writerData" "" Y
"Set1" "writerData" ×
"Jan" "writerData\Set1" ×
"Dec" "writerData\Set1" ×
"Set2" "writerData" ×
"Jan" "writerData\Set2" ×
"Dec" "writerData\Set2" ×
"クエリ" "writerData\QueryLogs" N
"使用法" "writerData" Y
"Jan" "writerData\Usage" ×
"Dec" "writerData\Usage" ×

 

コンポーネント "Executables" と "ConfigFile" には親子関係がありますが、どちらも選択できません。 したがって、コンポーネント セットは形成されません。 ライター MyWriter がバックアップまたは復元されるたびに、これら 2 つのコンポーネントを 操作に明示的に含める 必要があります。

コンポーネント "LicenseInfo" は、先祖も子孫も選択できません。 これは、リクエスターの裁量により、バックアップ操作または復元操作に明示的に含まれるか、含めないようにすることができます。

コンポーネント "Security" は、その下にコンポーネント セットを含まない単純なコンポーネント セットを定義します。

コンポーネント "writerData" はコンポーネント セットを定義します。コンポーネント セットの下には、いくつかの明確に定義された論理パス階層を持つコンポーネントの複雑なコレクションが含まれています。

サブコンポーネント "Usage" の 1 つが選択可能で、コンポーネント セットを定義します。

複数のコンポーネントは同じ名前を持ち、論理パスによって区別されます。 選択できないコンポーネント "Dec" と "Jan" のインスタンスは、選択できないコンポーネント "Set1" と "Set2" の下、および選択可能なサブコンポーネント "Usage" の下に存在します。

コンポーネント "writerData" が明示的にバックアップまたは復元に含まれている場合、"Usage" で定義された入れ子になったコンポーネント セット内のサブコンポーネントであっても、そのサブコンポーネントはすべて暗黙的に操作に含まれます

"writerData" によって定義されたコンポーネント セットがバックアップまたは復元に明示的に含まれていない場合、コンポーネント "Set1"、"Set2"、および "QueryLogs" (およびサブコンポーネント "Dec" と "Jan" のインスタンス) は、バックアップまたは復元操作に暗黙的に含まれません。

ただし、"writerData" が操作に含まれていない場合でも、コンポーネント "Usage" は選択可能であり、バックアップまたは復元操作に明示的に含めることができます。 その場合、そのサブコンポーネント "Jan" と "Dec" が暗黙的に含まれます。

その他の注意すべき点:

  • 選択可能なコンポーネント "LicenseInfo" と "writerData" と選択できないコンポーネント "実行可能ファイル" はすべて 、MyWriter の論理パス階層で同じレベルにあります。すべての論理パスは NULL または ""、ルート論理パスは同じです。
  • 選択可能な親 ("writerData") がバックアップまたは復元操作に明示的に含まれている場合は、選択可能なコンポーネント "Usage" をバックアップに明示的に含めてはいけません。
  • コンポーネント セットを定義するコンポーネントは、組織上の理由だけで存在する可能性があります。 たとえば、"writerData" コンポーネントまたは "Usage" コンポーネント、またはその両方が空の場合があります。つまり、IVssCreateWriterMetadata::AddFilesToFileGroupIVssCreateWriterMetadata::AddDatabaseFiles、または IVssCreateWriterMetadata::AddDatabaseLogFiles メソッドを使用してファイル セットが追加されませんでした。 コンポーネントは引き続きコンポーネント セットを定義します。