Compartir a través de


Implementar metadatos externos

Cuando un componente está desconectado de su origen de datos, puede validar las columnas de las colecciones de columnas de entrada y de resultados con las columnas en su origen de datos externo mediante la interfaz IDTSExternalMetadataColumnCollection100. Esta interfaz permite mantener una instantánea de las columnas en el origen de datos externo y asignar estas columnas a las columnas de la colección de columnas de entrada y de resultados del componente.

La implementación de columnas de metadatos externos agrega un nivel de sobrecarga y complejidad al desarrollo del componente, porque debe mantener y validar una colección de columnas adicionales, pero la capacidad de evitar los caros viajes de ida y vuelta (round trip) al servidor para la validación puede hacer que este trabajo de desarrollo valga la pena.

Rellenar columnas de metadatos externos

Las columnas de metadatos externos se agregan normalmente a la colección cuando se crea la columna de entrada o de resultados correspondiente. Para crear una nueva columna se llama al método New. Las propiedades de la columna se establecen después para coincidir con el origen de datos externo.

Para asignar la columna de metadatos externos a la columna de entrada o de resultados correspondiente se asigna el identificador de la columna de metadatos externos a la propiedad ExternalMetadataColumnID de la columna de entrada o de resultados. Esto le permite buscar con facilidad la columna de metadatos externos para una columna de entrada o de resultados concreta utilizando el método GetObjectByID de la colección.

En el ejemplo siguiente se muestra cómo crear una columna de metadatos externos y después asignar la columna a una columna de resultados estableciendo la propiedad ExternalMetadataColumnID.

public void CreateExternalMetaDataColumn(IDTSOutput100 output, int outputColumnID )
{
    IDTSOutputColumn100 oColumn = output.OutputColumnCollection.GetObjectByID(outputColumnID);
    IDTSExternalMetadataColumn100 eColumn = output.ExternalMetadataColumnCollection.New();

    eColumn.DataType = oColumn.DataType;
    eColumn.Precision = oColumn.Precision;
    eColumn.Scale = oColumn.Scale;
    eColumn.Length = oColumn.Length;
    eColumn.CodePage = oColumn.CodePage;

    oColumn.ExternalMetadataColumnID = eColumn.ID;
}
Public Sub CreateExternalMetaDataColumn(ByVal output As IDTSOutput100, ByVal outputColumnID As Integer) 
 Dim oColumn As IDTSOutputColumn100 = output.OutputColumnCollection.GetObjectByID(outputColumnID) 
 Dim eColumn As IDTSExternalMetadataColumn100 = output.ExternalMetadataColumnCollection.New 
 eColumn.DataType = oColumn.DataType 
 eColumn.Precision = oColumn.Precision 
 eColumn.Scale = oColumn.Scale 
 eColumn.Length = oColumn.Length 
 eColumn.CodePage = oColumn.CodePage 
 oColumn.ExternalMetadataColumnID = eColumn.ID 
End Sub

Validar con columnas de metadatos externos

La validación requiere pasos adicionales para los componentes que mantienen una colección de columnas de metadatos externos, porque debe validar una colección de columnas adicional. La validación se puede dividir en validación con conexión o validación sin conexión.

Validación con conexión

Cuando un componente está conectado a un origen de datos externo, las columnas de las colecciones de entrada o de resultados se comprueban directamente con el origen de datos externo. Además, se deben validar las columnas de la colección de metadatos externos. Esto es necesario porque la colección de metadatos externos se puede modificar utilizando el Editor avanzado de Business Intelligence Development Studio y los cambios realizados en la colección no son detectables. Por consiguiente, cuando se está conectado, los componentes deben asegurarse de que las columnas de la colección de columnas de metadatos externos continúan reflejando las columnas en el origen de datos externo.

Puede determinar ocultar la colección de metadatos externos en el Editor avanzado estableciendo la propiedad IsUsed de la colección en false. No obstante, esto también oculta la ficha Asignación de columnas del editor, que permite a los usuarios asignar las columnas de la colección de entrada o de resultados a las columnas de la colección de columnas de metadatos externos. El establecimiento de esta propiedad en false no impide que los programadores modifiquen la colección mediante programación, pero proporciona un nivel de protección para la colección de columnas de metadatos externos de un componente que se utiliza exclusivamente en Business Intelligence Development Studio.

Validación sin conexión

Cuando un componente está desconectado de un origen de datos externo, se simplifica la validación porque las columnas de la colección de entrada o de resultados se comprueban directamente con las columnas de la colección de metadatos externos y no con el origen externo. Un componente debe realizar la validación sin conexión cuando no se ha establecido la conexión a su origen de datos externo o cuando la propiedad ValidateExternalMetadata es false.

En el ejemplo de código siguiente se muestra una implementación de un componente que realiza la validación con su colección de columnas de metadatos externos. Para obtener un ejemplo más detallado, vea el ejemplo de complemento ADO Source en los ejemplos de Integration Services en Codeplex.

public override DTSValidationStatus Validate()
{
    if( this.isConnected && ComponentMetaData.ValidateExternalMetaData )
    {
        // TODO: Perform connected validation.
    }
    else
    {
        // TODO: Perform disconnected validation.
    }
}
Public  Overrides Function Validate() As DTSValidationStatus 
 If Me.isConnected AndAlso ComponentMetaData.ValidateExternalMetaData Then 
  ' TODO: Perform connected validation.
 Else 
  ' TODO: Perform disconnected validation.
 End If 
End Function
Icono de Integration Services (pequeño) Manténgase al día con Integration Services

Para obtener las descargas, los artículos, los ejemplos y los vídeos más recientes de Microsoft, así como soluciones seleccionadas de la comunidad, visite la página de Integration Services en MSDN o TechNet:

Para recibir notificaciones automáticas de estas actualizaciones, suscríbase a las fuentes RSS disponibles en la página.

Vea también

Conceptos