Compartilhar via


Implementando metadados externos

Aplica-se a: SQL Server SSIS Integration Runtime no Azure Data Factory

Quando um componente é desconectado de sua fonte de dados, você pode validar as colunas nas coleções de colunas de entrada e saída com base nas colunas da fonte de dados externa por meio da interface IDTSExternalMetadataColumnCollection100. Essa interface permite que você mantenha um instantâneo das colunas na fonte de dados externa e as mapeie para as colunas da coleção de colunas de entrada e saída do componente.

A implementação de colunas de metadados externos adiciona uma camada de sobrecarga e complexidade ao desenvolvimento do componente, já que você deve fazer a manutenção e a validação em uma coleção de colunas adicionais. Entretanto, a capacidade de evitar viagens dispendiosas de ida e volta ao servidor para validação pode tornar esse trabalho de desenvolvimento compensador.

Preenchendo colunas de metadados externos

Normalmente, colunas de metadados externas são adicionadas à coleção quando a coluna de entrada ou de saída correspondente é criada. Novas colunas são criadas chamando-se o método New. As propriedades da coluna são definidas para corresponder à fonte de dados externa.

A coluna de metadados externos é mapeada para a coluna de entrada e saída correspondente atribuindo-se a ID da coluna de metadados externos à propriedade ExternalMetadataColumnID da coluna de entrada e saída. Isto permite que você localize com facilidade a coluna de metadados externos para uma coluna de entrada ou saída específica usando o método GetObjectByID da coleção.

O exemplo a seguir mostra como criar uma coluna de metadados externos e mapear a coluna para uma coluna de saída ao definir a propriedade 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  

Validando com colunas de metadados externos

A validação requer etapas adicionais para componentes que mantêm uma coleção de colunas de metadados externos, porque você deve validar com base em uma coleção adicional de colunas. A validação pode ser dividida em validação conectada ou desconectada.

Validação conectada

Quando um componente é conectado a uma fonte de dados externa, as colunas nas coleções de entrada ou saída são verificadas diretamente na fonte de dados externa. Adicionalmente, as colunas na coleção de metadados externos devem ser validadas. Isso é necessário porque a coleção de metadados externos pode ser modificada por meio do Editor Avançado no SSDT (SQL Server Data Tools) e as alterações feitas à coleção não são detectáveis. Portanto, quando conectados, os componentes devem verificar se as colunas da coleção de colunas de metadados externos continuam refletindo as colunas da fonte de dados externa.

Você pode optar por ocultar a coleção de metadados externos no Editor Avançado, configurando a propriedade IsUsed da coleção como false. Entretanto, esse procedimento também oculta a guia Mapeamento de Coluna do editor, a qual permite que os usuários mapeiem as colunas da coleção de entrada ou saída para as colunas da coleção de colunas de metadados externos. Configurar esta propriedade como false não impede que os desenvolvedores modifiquem programaticamente a coleção, mas fornece efetivamente um nível de proteção para a coleção de colunas de metadados externos de um componente que é utilizado exclusivamente no SSDT (SQL Server Data Tools).

Validação desconectada

Quando um componente é desconectado de uma fonte de dados externa, a validação é simplificada porque as colunas da coleção de entrada ou saída são verificadas diretamente com base nas colunas da coleção de metadados externos e não com base na fonte externa. Um componente deverá executar a validação desconectada quando a conexão com sua fonte de dados externa não tiver sido estabelecida ou quando a propriedade ValidateExternalMetadata for false.

O exemplo de código a seguir demonstra uma implementação de um componente que executa validação com base em sua coleção de colunas de metadados externos.

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  

Consulte Também

Fluxo de Dados