선택 가능성 및 구성 요소 속성 작업
암시적으로 선택된 구성 요소를 사용하려면 백업 구성 요소 문서와 기록기 메타데이터 문서 모두에 액세스해야 합니다.
여기에는 두 가지 이유가 있습니다.
- 백업 구성 요소 문서에 저장된 구성 요소 데이터( IVssComponent 인터페이스로 표시됨)에는 구성 요소 파일 집합 정보(파일 사양, 경로 및 재귀 플래그)에 대한 액세스 권한이 없습니다. ( 백업 구성 요소 문서 작업을 참조하세요.)
- 백업 중에 백업 구성 요소 문서에 명시적으로 포함된 구성 요소만 해당 정보가 백업 구성 요소 문서에 직접 저장됩니다. 요청자와 작성기는 IVssComponent 인터페이스를 통해 사용할 수 있는 정보를 논리 경로 정보 및 기록기 메타데이터 문서와 함께 사용하여 암시적으로 포함된 구성 요소에 대한 정보를 가져오고 속성을 설정해야 합니다.
구성 요소의 논리적 경로에 설명된 "MyWriter" 사례를 사용하여 백업 선택 가능성을 설명할 수 있습니다.
구성 요소 이름 | 논리 경로 | 백업을 위해 선택 가능 | 복원을 위해 선택할 수 있습니다. | 명시적으로 포함됨 |
---|---|---|---|---|
"실행 파일" | "" | N | N | Y |
"ConfigFiles" | "실행 파일" | N | N | Y |
"LicenseInfo" | "" | Y | N | Y |
"Security" | "" | Y | N | Y |
"UserInfo" | "Security" | N | N | N |
"인증서" | "Security" | N | N | N |
"writerData" | "" | Y | Y | Y |
"Set1" | "writerData" | N | Y | N |
"Jan" | "writerData\Set1" | N | N | N |
"12월" | "writerData\Set1" | N | N | N |
"Set2" | "writerData" | N | Y | N |
"Jan" | "writerData\Set2" | N | N | N |
"12월" | "writerData\Set2" | N | N | N |
"쿼리" | "writerData\QueryLogs" | N | N | N |
"사용량" | "writerData" | Y | Y | N |
"Jan" | "writerData\Usage" | N | N | N |
"12월" | "writerData\Usage" | N | N | N |
백업 집합에 암시적으로 포함된 구성 요소
백업하는 동안 기록기의 기록기 메타데이터 문서( IVssBackupComponents::GetWriterMetadata 참조)를 검사하는 동안 요청자는 모든 구성 요소, 해당 논리 경로 및 파일 집합 정보의 목록을 저장해야 합니다.
포함된 모든 구성 요소(명시적 또는 암시적)에 대한 파일 목록을 확인하려면 파일 집합 및 제외된 파일 정보가 필요합니다.
백업 상위 항목에 대해 선택할 수 없고 구성 요소 집합을 정의하지 않는 백업 구성 요소에 대해 선택할 수 없는 백업 구성 요소의 경우 이러한 구성 요소가 하위 구성 요소를 정의하지 않으므로 모든 구성 요소의 백업 후보를 식별하기 위해 파일 집합 및 제외된 파일 정보만 필요합니다.
구성 요소 집합을 정의하는 백업 구성 요소에 대해 명시적으로 포함할 수 있는 경우 파일 집합 및 제외 파일 정보는 정의 구성 요소와 모든 하위 구성 요소 모두에 대한 파일 정보를 사용하여 백업할 파일을 선택해야 합니다.
즉, 구성 요소 "실행 파일", "ConfigFiles" 및 "LicenseInfo"에 대한 백업 집합은 IVssWMComponent 인터페이스의 인스턴스를 사용하여 이러한 구성 요소에 대한 기록기 메타데이터만 검사해야만 찾을 수 있습니다.
그러나 writerData가 백업에 명시적으로 포함된 경우 IVssWMComponent 인터페이스의 instance "Set1", "Jan"(논리 경로 "writerData\Set1"), "Dec"(논리 경로 "writerData\Set1"), "Set2"에 대한 인터페이스를 검사해야 합니다. "Jan"(논리 경로 "writerData\Set2"), "Dec"(논리 경로 "writerData\Set2"), "Query", "Usage", "Jan"(논리 경로 "writerData\Usage"), "Dec"(논리 경로 "writerData\Usage"포함).
이렇게 하려면 요청자는 먼저 구성 요소 "writerData"(논리 경로 "")를 선택할 수 있는지 식별해야 합니다. 그런 다음 기록기에서 관리하는 다른 모든 구성 요소를 검사하여 논리 경로의 첫 번째 요소가 "writerData"인지 확인해야 합니다. 논리 경로의 선행 멤버로 "writerData"가 있는 구성 요소는 "writerData"의 하위 구성 요소로 식별되며 명시적으로 선택될 때 암시적으로 선택됩니다.
실제로 유사한 검사를 통해 구성 요소에 논리 경로의 선행 멤버로 "LicenseInfo"가 없으므로 "LicenseInfo"에 하위 구성 요소가 없는지 확인해야 합니다.
VSS에서 이 메커니즘이 복잡하기 때문에 많은 요청자 작성자는 명시적으로 추가된 구성 요소와 암시적으로 추가된 구성 요소 모두에 대한 구성 요소 및 백업 집합 정보를 저장하기 위한 자체 구조를 만드는 것이 유용할 수 있습니다.
암시적으로 포함된 구성 요소의 속성
복원 및 백업 작업 중에 IVssComponent 및 IVssBackupComponents 인터페이스의 인스턴스는 구성 요소에 대한 정보를 검색하고 구성 요소 속성을 설정하거나 변경하는 데 사용됩니다. 그러나 명시적으로 포함된 구성 요소만 IVssComponent 인터페이스의 인스턴스를 포함하거나 IVssBackupComponents 인터페이스에 액세스할 수 있습니다.
일부 속성은 scope 구성 요소 집합 전체입니다. 이러한 속성에는 다음이 포함됩니다.
- 백업 및 복원 상태:
IVssBackupComponents::SetBackupSucceeded
IVssComponent::GetBackupSucceeded
IVssBackupComponents::SetFileRestoreStatus
IVssComponent::GetFileRestoreStatus
- 백업 및 복원 옵션:
IVssBackupComponents::SetBackupOptions
IVssComponent::GetBackupOptions
IVssBackupComponents::SetRestoreOptions
IVssComponent::GetRestoreOptions
- 오류 메시지:
IVssComponent::SetPostRestoreFailureMsg
IVssComponent::SetPreRestoreFailureMsg
IVssComponent::SetPostRestoreFailureMsg
IVssComponent::SetPreRestoreFailureMsg
- 복원 대상:
IVssComponent::SetRestoreTarget
IVssComponent::GetRestoreTarget
- 백업 스탬프:
IVssComponent::SetBackupStamp
IVssComponent::GetBackupStamp
- 추가 메타데이터:
IVssComponent::SetRestoreMetadata
IVssComponent::GetRestoreMetadata
IVssComponent::SetBackupMetadata
IVssComponent::GetBackupMetadata
따라서 구성 요소 집합의 정의 멤버에 대한 IVssComponent 인터페이스의 instance 사용하거나 IVssBackupComponents 메서드와 함께 정의 멤버의 이름, 형식 및 논리 경로를 사용하여 모든 구성 요소 집합의 멤버에 대한 속성을 설정하거나 검색합니다.
이러한 이유로 구성 요소 집합은 단위로 처리됩니다. instance 경우 모든 구성 요소의 모든 파일 집합 백업이 성공한 경우에만 구성 요소 집합의 백업이 성공합니다.
앞의 예제에서 구성 요소 "Jan"(논리 경로가 "writerData\Set2"인)의 한 파일이 "writerData"로 정의된 구성 요소 집합의 멤버라고 가정합니다. "Jan"의 파일 중 하나를 백업하지 못한 경우 요청자는 IVssBackupComponents::SetBackupSucceed 를 false 로 설정하여 구성 요소 집합의 실패를 나타낼 때 "writerData"의 정보(이름 "writerData", 경로 "" 및 구성 요소 형식)를 인수로 사용합니다.
마찬가지로 IVssComponent 인터페이스의 "writerData"의 instance 대해 IVssComponent::GetBackupSucceeded에서 반환된 상태는 "writerData"뿐만 아니라 모든 하위 구성 요소에도 적용됩니다.
또한 작성기가 IVssComponent의 "writerData" instance IVssComponent::SetRestoreTarget을 사용하여 복원 대상을 변경하도록 선택한 경우 모든 "writerData" 하위 구성 요소의 모든 파일 집합에 대한 복원 대상이 변경됩니다.
다음 속성은 구성 요소 전체가 아니라 특정 파일 또는 파일 집합에 적용됩니다.
- 대체 위치 매핑:
IVssBackupComponents::AddAlternativeLocationMapping
IVssComponent::GetAlternateLocationMapping
IVssComponent::GetAlternateLocationMappingCount
- 차이점이 있는 파일:
IVssComponent::AddDifferencedFilesByLastModifyTime
IVssComponent::GetDifferencedFile
IVssComponent::GetDifferencedFilesCount
- 부분 파일:
IVssComponent::AddPartialFile
IVssComponent::GetPartialFile
IVssComponent::GetPartialFileCount
- 지시 대상:
IVssComponent::AddDirectedTarget
IVssComponent::GetDirectedTarget
IVssComponent::GetDirectedTargetCount
- 새 대상:
IVssBackupComponents::AddNewTarget
IVssComponent::GetNewTarget
IVssComponent::GetNewTargetCount
요청자가 IVssBackupComponents 인터페이스를 사용하여 하위 구성 요소에 대해 이러한 기능에 액세스하는 경우 구성 요소 집합의 정의 구성 요소에 대한 구성 요소 정보를 사용하지만 하위 구성 요소에 대한 파일 또는 파일 집합 정보를 사용합니다.
마찬가지로 IVssComponent 인터페이스를 통해 속성에 액세스할 수 있는 경우 정의 하위 구성 요소에 해당하는 instance 사용되지만 파일 또는 파일 집합 인수는 하위 구성 요소에서 가져옵니다.
instance 경우 하위 구성 요소 "Jan"(논리 경로 "writerData\Set2")에 경로가 "c:\fred"인 파일 집합, "*.dat"의 파일 사양 및 true의 재귀 플래그가 대체 위치로 복원되어야 할 수 있다고 가정합니다.
이 경우 요청자는 "writerData"의 정보(구성 요소 형식, "writeData"의 구성 요소 이름 및 ""의 논리적 경로)와 함께 "Jan"의 파일 집합 정보(경로 "c:\fred", 파일 사양 "*.dat", 재귀가 true와 같음)를 사용하여 IVssBackupComponents::AddAlternativeLocationMapping을 호출합니다.
이 경우 파일 집합 정보는 IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFiles 또는 IVssCreateWriterMetadata::AddDatabaseLogFiles에서 사용하는 파일 집합 정보와 정확히 일치하여 1월에 파일을 추가해야 합니다.
마찬가지로 작성자가 "c:\ethel" 경로와 "Jan"(논리적 경로 "writerData\Set2")으로 관리되는 "lucy.dat" 이름을 가진 파일에 지시된 대상을 추가하려는 경우 "writerData"에 해당하는 IVssComponent instance 사용하지만 "Jan"의 파일 정보를 사용합니다.
복원 집합에 암시적으로 포함된 구성 요소
백업에 암시적으로 포함된 구성 요소는 복원을 위해 선택할 수 있는 경우 복원에 명시적으로 포함될 수 있습니다. 복원 및 하위 구성 요소에 대한 선택 가능성 작업에서 설명한 대로 이러한 구성 요소는 IVssBackupComponents::AddRestoreSubcomponent 메서드를 사용하여 백업 구성 요소 문서에 추가됩니다.
그러나 IVssComponent 인터페이스의 새 instance 만들지 않으며 IVssBackupComponents 인터페이스를 통해 구성 요소에 직접 액세스할 수 없습니다.
대신 복원을 위해 명시적으로 포함되지만 백업에 암시적으로 포함된 구성 요소는 백업 시 멤버인 구성 요소 집합을 정의한 구성 요소에 해당하는 IVssComponent 인터페이스의 instance 통해 액세스해야 합니다.
예를 들어 백업 구성 요소 "writerData"에 대해 선택 가능한 하위 구성 요소인 "Set1"을 명시적으로 포함하려면 IVssComponent::GetRestoreSubcomponent 메서드의 IVssComponent::GetRestoreSubcomponent 메서드를 호출하여 IVssComponent 인터페이스의 instance.