Criando um componente de fluxo de dados personalizado

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

Em Microsoft SQL Server Integration Services, a tarefa de fluxo de dados expõe um modelo de objetos que permite aos programadores criar componentes personalizados do fluxo de dados — fontes, transformações e destinos — utilizando o Microsoft .NET Framework e código gerido.

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

Note

Quando crias um fornecedor personalizado, precisas de atualizar o ficheiro ProviderDescriptors.xml com os valores das colunas de metadados.

Tempo de Conceção e Tempo de Execução

Antes da execução, diz-se que a tarefa de fluxo de dados está num estado de design, pois 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 de caminho que ligam os componentes e alterações aos metadados desses componentes. Quando ocorrem alterações nos metadados, o componente pode monitorizar e reagir às alterações. Por exemplo, um componente pode impedir certas alterações ou fazer alterações adicionais em resposta a uma alteração. No momento do design, o designer interage com um componente através da interface design-time IDTSDesigntimeComponent100 .

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

Criação de um Componente

Para criar um componente de fluxo de dados, deriva-se uma classe a partir da PipelineComponent classe base, aplica-se a DtsPipelineComponentAttribute classe e depois sobrepõe-se aos métodos apropriados da classe base. Implementa PipelineComponent as IDTSDesigntimeComponent100 interfaces e IDTSRuntimeComponent100 expõe os seus métodos para que possas sobrepor no teu componente.

Dependendo dos objetos usados pelo seu componente, o seu projeto exigirá referências a algumas ou todas as seguintes assembleias:

Feature Montagem para referência Espaço de nomes a importar
Fluxo de dados Microsoft. SqlServer.PipelineHost Microsoft.SqlServer.Dts.Pipeline
Envoltório de fluxo de dados Microsoft. SqlServer.DTSPipelineWrap Microsoft.SqlServer.Dts.Pipeline.Wrapper
Tempo de execução Microsoft. SQLServer.ManagedDTS Microsoft.SqlServer.Dts.Runtime
Envoltório de tempo de execução Microsoft. SqlServer.DTSRuntimeWrap Microsoft.SqlServer.Dts.Runtime.Wrapper

O exemplo de código seguinte mostra um componente simples que deriva da classe base, e aplica o DtsPipelineComponentAttribute. Precisas de adicionar uma referência à Microsoft. Assembly 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