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