Compartilhar via


Criando um componente de fluxo de dados personalizado

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

No Microsoft SQL Server Integration Services, a tarefa de fluxo de dados expõe um modelo de objeto que permite que os desenvolvedores criem componentes de fluxo de dados personalizados, como fontes, transformações e destinos, usando o Microsoft .NET Framework e o código gerenciado.

Uma tarefa de fluxo de dados consiste em componentes que contêm uma interface IDTSComponentMetaData100 e uma coleção de objetos IDTSPath100 que definem o movimento dos dados entre os componentes.

Observação

Quando você cria um provedor personalizado, precisa atualizar o arquivo ProviderDescriptors.xml com os valores de coluna de metadados.

Tempo de design e tempo de execução

Antes da execução, diz-se que a tarefa de fluxo de dados está em um estado de tempo de design, quando sofre alterações incrementais. As alterações podem incluir a adição ou remoção de componentes, a adição ou remoção dos objetos do caminho que conectam componentes e as alterações nos metadados dos componentes. Quando ocorrem alterações em metadados, o componente pode monitorar e reagir às alterações. Por exemplo, um componente pode desabilitar certas alterações ou fazer alterações adicionais em resposta a uma alteração. Em tempo de design, o designer interage com um componente através da interface IDTSDesigntimeComponent100 em tempo de design.

No tempo de execução, a tarefa de fluxo de dados examina a sequência de componentes, prepara um plano de execução e gerencia um pool de threads de trabalho que executa o plano de trabalho. Embora cada thread de trabalho desempenhe algum trabalho interno à tarefa de fluxo de dados, a principal tarefa do thread de trabalho é chamar os métodos do componente através da interface IDTSRuntimeComponent100 em tempo de execução.

Criando um componente

Para criar um componente de fluxo de dados, você deve derivar uma classe da classe base PipelineComponent, aplicar a classe DtsPipelineComponentAttribute e substituir os métodos apropriados da classe base. O PipelineComponent implementa as interfaces IDTSDesigntimeComponent100 e IDTSRuntimeComponent100 e expõe os métodos para você substituir em seu componente.

Dependendo dos objetos usados pelo seu componente, seu projeto precisará de referências a alguns ou todos os assemblies seguintes:

Recurso Assembly para referência Namespace para importar
Fluxo de dados Microsoft.SqlServer.PipelineHost Microsoft.SqlServer.Dts.Pipeline
Wrapper de fluxo de dados Microsoft.SqlServer.DTSPipelineWrap Microsoft.SqlServer.Dts.Pipeline.Wrapper
Runtime Microsoft.SQLServer.ManagedDTS Microsoft.SqlServer.Dts.Runtime
Wrapper de runtime Microsoft.SqlServer.DTSRuntimeWrap Microsoft.SqlServer.Dts.Runtime.Wrapper

O exemplo de código a seguir mostra um componente simples que deriva da classe base e aplica o DtsPipelineComponentAttribute. Você precisa adicionar uma referência ao assembly Microsoft.SqlServer.DTSPipelineWrap.

using System;  
using Microsoft.SqlServer.Dts.Pipeline;  
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;  
  
namespace Microsoft.Samples.SqlServer.Dts  
{  
    [DtsPipelineComponent(DisplayName = "SampleComponent", ComponentType = ComponentType.Transform )]  
    public class BasicComponent: PipelineComponent  
    {  
        // TODO: Override the base class methods.  
    }  
}  
Imports Microsoft.SqlServer.Dts.Pipeline  
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper  
  
<DtsPipelineComponent(DisplayName:="SampleComponent", ComponentType:=ComponentType.Transform)> _  
Public Class BasicComponent  
  
    Inherits PipelineComponent  
  
    ' TODO: Override the base class methods.  
  
End Class  

Consulte Também

Desenvolvendo uma interface do usuário para um componente de fluxo de dados