Selectability and Working with Component Properties

El trabajo con componentes seleccionados implícitamente requiere acceso a los documentos de documentos de componentes de copia de seguridad y a los documentos de metadatos del escritor.

Hay dos motivos para ello:

  • Los datos de componente almacenados en el documento componentes de copia de seguridad (representados por la interfaz IVssComponent ) carecen de acceso a la información del conjunto de archivos componentes: especificación de archivo, ruta de acceso y marca de recursividad. (Vea Trabajar con el documento Componentes de copia de seguridad).
  • Solo los componentes que se incluyen explícitamente en el documento componentes de copia de seguridad durante la copia de seguridad tienen su información almacenada directamente en el documento componentes de copia de seguridad. Los solicitantes y escritores deben usar la información disponible a través de la interfaz IVssComponent , junto con la información de ruta lógica y los documentos de metadatos del escritor para obtener información sobre, y establecer propiedades de componentes incluidos implícitamente .

El caso "MyWriter" que se describe en Ruta de acceso lógica de componentes se puede usar para ilustrar la capacidad de selección para la copia de seguridad.

Nombre de componente Ruta de acceso lógica Seleccionable para la copia de seguridad Seleccionable para restaurar Se incluye explícitamente
"Ejecutables" "" N N Y
"ConfigFiles" "Ejecutables" N N Y
"LicenseInfo" "" Y N Y
"Security" "" Y N Y
"UserInfo" "Security" N N N
"Certificados" "Security" N N N
"writerData" "" Y Y Y
"Set1" "writerData" N Y N
"Jan" "writerData\Set1" N N N
"Dec" "writerData\Set1" N N N
"Set2" "writerData" N Y N
"Jan" "writerData\Set2" N N N
"Dec" "writerData\Set2" N N N
"Consulta" "writerData\QueryLogs" N N N
"Uso" "writerData" Y Y N
"Jan" "writerData\Usage" N N N
"Dec" "writerData\Usage" N N N

 

Componentes incluidos implícitamente en el conjunto de copia de seguridad

Al examinar el documento de metadatos del escritor (consulte IVssBackupComponents::GetWriterMetadata) durante la copia de seguridad, un solicitante debe almacenar una lista de todos los componentes, sus rutas de acceso lógicas y su información de conjunto de archivos.

Se necesitará información de archivo y conjunto de archivos excluidos para determinar una lista de archivos para cualquier componente incluido (explícita o implícitamente).

En el caso de los componentes de copia de seguridad no seleccionables para los antecesores de copia de seguridad y seleccionables para los componentes de copia de seguridad que no definen un conjunto de componentes, solo se necesitará información de archivo y excluida para identificar todos los candidatos del componente para la copia de seguridad, ya que estos componentes no definen subcomponentes.

Para incluir explícitamente los componentes de copia de seguridad que definen un conjunto de componentes, los conjuntos de archivos y excluir la información de archivo para el componente que define y todos los subcomponentes deben usarse para seleccionar archivos para la copia de seguridad.

Esto significa que los conjuntos de copia de seguridad de los componentes "Ejecutables", "ConfigFiles" y "LicenseInfo" solo se pueden encontrar examinando los metadatos del escritor para estos componentes mediante sus instancias de la interfaz IVssWMComponent .

Sin embargo, si writerData se incluye explícitamente en la copia de seguridad, Debe examinar su instancia de la interfaz IVssWMComponent y las de "Set1", "Jan" (con la ruta de acceso lógica "writerData\Set1"), "Dec" (con la ruta de acceso lógica "writerData\Set1"), "Set2", "Jan" (Ene) con la ruta de acceso lógica "writerData\Set2"), "Dec" (con la ruta lógica "writerData\Set2"), "Query", "Usage", "Jan" (con la ruta lógica "writerData\Usage") y "Dec" (con la ruta de acceso lógica "writerData\Usage").

Para ello, un solicitante tendrá que identificar primero que el componente "writerData" (ruta de acceso lógica "") se puede seleccionar. A continuación, tendrá que examinar todos los demás componentes administrados por el escritor para determinar si el primer elemento de su ruta lógica es "writerData". Los componentes que tienen "writerData" como miembros principales de su ruta de acceso lógica se identifican como subcomponentes de "writerData" y se seleccionan implícitamente cuando se selecciona explícitamente.

De hecho, es necesario realizar un examen similar para determinar que ningún componente tiene "LicenseInfo" como miembro líder de su ruta lógica y, por lo tanto, que "LicenseInfo" no tiene subcomponentes.

Debido a la complejidad de este mecanismo en VSS, muchos autores de solicitudes pueden resultar útiles para crear sus propias estructuras para almacenar información de componentes y conjuntos de copia de seguridad para componentes agregados de forma explícita e implícita.

Propiedades de componentes incluidos implícitamente

Durante las operaciones de restauración y copia de seguridad, se usan instancias de las interfaces IVssComponent e IVssBackupComponents para recuperar información sobre los componentes y para establecer o cambiar las propiedades de los componentes. Sin embargo, solo los componentes incluidos explícitamente tendrán instancias de la interfaz IVssComponent o serán accesibles para la interfaz IVssBackupComponents .

Algunas propiedades son de todo el ámbito del conjunto de componentes. Estas propiedades incluyen lo siguiente:

  • Estado de copia de seguridad y restauración:

IVssBackupComponents::SetBackupSucceeded
IVssComponent::GetBackupSucceeded
IVssBackupComponents::SetFileRestoreStatus
IVssComponent::GetFileRestoreStatus

  • Opciones de copia de seguridad y restauración:

IVssBackupComponents::SetBackupOptions
IVssComponent::GetBackupOptions
IVssBackupComponents::SetRestoreOptions
IVssComponent::GetRestoreOptions

  • Mensajes de error:

IVssComponent::SetPostRestoreFailureMsg
IVssComponent::SetPreRestoreFailureMsg
IVssComponent::SetPostRestoreFailureMsg
IVssComponent::SetPreRestoreFailureMsg

  • Destinos de restauración:

IVssComponent::SetRestoreTarget
IVssComponent::GetRestoreTarget

  • Sellos de copia de seguridad:

IVssComponent::SetBackupStamp
IVssComponent::GetBackupStamp

  • Metadatos adicionales:

IVssComponent::SetRestoreMetadata
IVssComponent::GetRestoreMetadata
IVssComponent::SetBackupMetadata
IVssComponent::GetBackupMetadata

Por lo tanto, se usa la instancia de la interfaz IVssComponent del miembro que define un conjunto de componentes o se usa el nombre, el tipo y la ruta de acceso lógica del miembro de definición con un método IVssBackupComponents para establecer o recuperar propiedades para todos los miembros del conjunto de componentes.

Por este motivo, los conjuntos de componentes se tratan como unidades. Por ejemplo, una copia de seguridad de un conjunto de componentes solo se realiza correctamente si la copia de seguridad de todos los conjuntos de archivos de todos sus componentes es correcta.

En el ejemplo anterior, supongamos que un archivo del componente "Jan" (con la ruta lógica "writerData\Set2") es un miembro del conjunto de componentes definido por "writerData". Si uno de los archivos de "Jan" no se pudo realizar una copia de seguridad, un solicitante usaría la información de "writerData" (su nombre "writerData", su ruta de acceso "" y su tipo de componente) como argumentos al establecer IVssBackupComponents::SetBackupSucceeded confalse para indicar el error del conjunto de componentes.

Del mismo modo, el estado devuelto por IVssComponent::GetBackupSucceeded para la instancia "writerData" de la interfaz IVssComponent se aplica no solo a "writerData", sino también a todos sus subcomponentes.

Además, si un escritor decide cambiar el destino de restauración mediante IVssComponent::SetRestoreTarget de la instancia de IVssComponent de IVssComponent, esto cambiaría el destino de restauración para todos los conjuntos de archivos de todos los subcomponentes de "writerData".

Las siguientes propiedades no se aplican en todo el componente, sino a archivos o conjuntos de archivos concretos:

  • Asignaciones de ubicación alternativas:

IVssBackupComponents::AddAlternativeLocationMapping
IVssComponent::GetAlternateLocationMapping
IVssComponent::GetAlternateLocationMappingCount

  • Archivos diferenciados:

IVssComponent::AddDifferencedFilesByLastModifyTime
IVssComponent::GetDifferencedFile
IVssComponent::GetDifferencedFilesCount

  • Archivos parciales:

IVssComponent::AddPartialFile
IVssComponent::GetPartialFile
IVssComponent::GetPartialFileCount

  • Destinos dirigidos:

IVssComponent::AddDirectedTarget
IVssComponent::GetDirectedTarget
IVssComponent::GetDirectedTargetCount

  • Nuevos destinos:

IVssBackupComponents::AddNewTarget
IVssComponent::GetNewTarget
IVssComponent::GetNewTargetCount

Cuando un solicitante accede a estas características para un subcomponente mediante la interfaz IVssBackupComponents , usa la información del componente para el componente que define el conjunto de componentes, pero el archivo o la información del conjunto de archivos para el subcomponente.

Del mismo modo, si la propiedad es accesible a través de la interfaz IVssComponent , se usa la instancia correspondiente al subcomponente que define, pero los argumentos file o file set se toman del subcomponente.

Por ejemplo, supongamos que el subcomponente "Jan" (con la ruta lógica "writerData\Set2") tenía un conjunto de archivos con una ruta de acceso de "c:\fred", una especificación de archivo de "*.dat" y una marca recursiva de true podría tener que restaurarse en una ubicación alternativa.

Si este fuera el caso, un solicitante llamaría a IVssBackupComponents::AddAlternativeLocationMapping, usando la información de "writerData" (tipo de componente, un nombre de componente de "writeData" y una ruta de acceso lógica de "") junto con la información del conjunto de archivos de "Jan" (ruta de acceso "c:\fred", especificación de archivo "*.dat" y recursión es igual a true).

Tenga en cuenta que, en este caso, la información del conjunto de archivos debe coincidir exactamente con la información del conjunto de archivos usada por IVssCreateWriterMetadata::AddDatabaseFiles::AddDatabaseFiles o IVssCreateWriterMetadata::AddDatabaseLogFiles para agregar archivos a Jan.

Del mismo modo, si un escritor quería agregar un destino dirigido a un archivo con una ruta de acceso de "c:\ethel" y el nombre "lucy.dat" administrado por "Jan" (con la ruta lógica "writerData\Set2"), usaría la instancia de IVssComponent correspondiente a "writerData", pero "la información del archivo de Jan".

Componentes incluidos implícitamente en el conjunto de restauración

Los componentes que se incluyeron implícitamente en una copia de seguridad se pueden incluir explícitamente en una restauración si se pueden seleccionar para la restauración. Como se indicó en Working with Selectability for Restore and Subcomponents (Trabajar con selectibilidad para restaurar y subcomponentes), estos componentes se agregan al documento componentes de copia de seguridad mediante el método IVssBackupComponents::AddRestoreSubcomponent .

Sin embargo, esto no crea una nueva instancia de la interfaz IVssComponent , ni es el componente accesible directamente a través de la interfaz IVssBackupComponents .

En su lugar, se debe tener acceso a un componente explícitamente incluido para la restauración, pero se incluye implícitamente para la copia de seguridad, a través de una instancia de la interfaz IVssComponent correspondiente al componente que definió el conjunto de componentes del que era miembro tras la copia de seguridad.

Por ejemplo, para incluir explícitamente para la restauración "Set1", un subcomponente del componente de copia de seguridad "writerData", obtendría información sobre ella llamando al método IVssComponent::GetRestoreSubcomponent de la instancia de "writerData" de la interfaz IVssComponent .