Desenvolvendo objetos personalizados para o Integration Services
Aplica-se a: Tempo de execução de integração do SSIS do SQL Server no Azure Data Factory
Quando os objetos de fluxo de controle e de fluxo de dados incluídos no SQL Server Integration Services não atendem completamente a seus requisitos, você pode desenvolver muitos tipos de objetos personalizados, incluindo:
Tarefas personalizadas.
Gerenciadores de conexões personalizados. Conectam-se a fontes de dados externas sem-suporte atualmente.
Provedores de log personalizados. Registram eventos de pacote em formatos sem-suporte atualmente.
Enumeradores personalizados. Dão suporte à iteração de um conjunto de formatos de objetos ou valores sem-suporte atualmente.
Componentes de fluxo de dados personalizados. Podem ser configurados como origens, transformações ou destinos.
O modelo de objeto do Integration Services facilita esse desenvolvimento personalizado com classes base que fornecem uma estrutura consistente e confiável para sua implementação personalizada.
Se você não tiver que reutilizar a funcionalidade personalizada em múltiplos pacotes, a tarefa Script e o componente Script proporcionam o total poder de uma linguagem de programação gerenciada, com significativamente menos códigos de infraestrutura para gravar. Para obter mais informações, consulte Comparar soluções de script e objetos personalizados.
Etapas para desenvolver um objeto personalizado para o Integration Services
Quando desenvolve um objeto personalizado para usar no Integration Services, você desenvolve uma Biblioteca de Classes (DLL) que será carregada em tempo de design e em tempo de execução pelo SSIS Designer e pelo tempo de execução do Integration Services. Os métodos mais importantes que você deve implementar não são métodos que você chama do seu próprio código, mas métodos que o runtime chama em momentos apropriados para inicializar e validar seu componente e invocar sua funcionalidade.
Eis as etapas que você deve seguir para desenvolver um objeto personalizado:
Crie um projeto novo do tipo Biblioteca de Classes na linguagem de programação gerenciada de sua preferência.
Herde da classe base apropriada, como mostrado na tabela seguinte.
Aplique o atributo apropriado em sua classe nova, como mostrado na tabela seguinte.
Substitua os métodos da classe base, conforme requerido, e grave o código para a funcionalidade personalizada de seu objeto.
Opcionalmente, compile uma interface do usuário personalizada para seu componente. Para facilitar a implantação, talvez você queira desenvolver a interface do usuário como um projeto separado na mesma solução e compilá-lo como um assembly separado.
Opcionalmente, exiba um link para exemplos e conteúdo da Ajuda para o objeto personalizado, na Caixa de ferramentas do SSIS.
Crie, implante e depure seu novo objeto personalizado conforme descrito em Compilar, implantar e depurar objetos personalizados.
Classes base, atributos e métodos importantes
Essa tabela fornece uma referência fácil aos elementos mais importantes no modelo de objeto do Integration Services para cada tipo de objeto personalizado que você pode desenvolver.
Objeto personalizado | Classe base | Atributo | Métodos importantes |
---|---|---|---|
Tarefa | Task | DtsTaskAttribute | Execute |
Gerenciador de conexões | ConnectionManagerBase | DtsConnectionAttribute | AcquireConnection, ReleaseConnection |
Provedor de log | LogProviderBase | DtsLogProviderAttribute | OpenLog, Log, CloseLog |
Enumerador | ForEachEnumerator | DtsForEachEnumeratorAttribute | GetEnumerator |
Componente de fluxo de dados | PipelineComponent | DtsPipelineComponentAttribute | ProvideComponentProperties, PrimeOutput, ProcessInput |
Fornecendo links para exemplos e conteúdo da ajuda
Para exibir um link na Caixa de Ferramentas do SSIS para exemplos e conteúdo da Ajuda para um objeto personalizado escrito em código gerenciado, use as propriedades a seguir.
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.SamplesTag*
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.HelpCollection*
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.HelpKeyword*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.SamplesTag*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.HelpCollection*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.HelpKeyword*
Para exibir um link para exemplos e conteúdo da Ajuda para um objeto personalizado escrito em código nativo, adicione entradas no arquivo de Script de Registro (.rgs) para SamplesTag, HelpKeyword e HelpCollection. A seguir, é mostrado um exemplo.
val HelpKeyword = s 'sql11.dts.designer.executepackagetask.F1'
val SamplesTag = s 'ExecutePackageTask'
Fornecendo uma interface do usuário personalizada
Para permitir que os usuários de seu objeto personalizado configurem suas propriedades, você pode ser necessário desenvolver uma interface do usuário personalizada. Nos casos em que uma interface do usuário personalizada não for estritamente necessária, você pode escolher criar uma para fornecer uma interface mais amigável do que o editor padrão.
Em um projeto ou assembly de interface do usuário personalizada, normalmente você tem duas classes: uma classe que implementa uma interface do Integration Services para interfaces do usuário para o tipo específico de objeto personalizado e o formulário do Windows exibido para reunir informações do usuário. As interfaces que você implementa têm somente alguns métodos e uma interface do usuário personalizada não é difícil desenvolver.
Observação
Muitos provedores de log do Integration Services têm uma interface do usuário personalizada que implementa o IDtsLogProviderUI e substitui a caixa de texto Configuração por uma lista suspensa filtrada com gerenciadores de conexões disponíveis. Porém, interfaces do usuário personalizadas para provedores de log personalizados não são implementadas nesta versão do Integration Services. Especificar um valor para a propriedade UITypeName do DtsLogProviderAttribute não tem efeito.
A tabela a seguir fornece uma referência fácil às interfaces que você deve implementar quando desenvolve uma interface do usuário personalizada para cada tipo de objeto personalizado. Ela também explica o que o usuário vê se você decide não desenvolver uma interface do usuário personalizada para seu objeto ou se você deixa de vincular seu objeto à sua interface do usuário usando a propriedade UITypeName no atributo do objeto. Embora o potente Editor Avançado possa ser satisfatório para um componente de fluxo de dados, a janela Propriedades é uma solução menos amigável para tarefas e gerenciadores de conexões, e um enumerador de Foreach personalizado não pode ser configurado sem um formulário personalizado.
Objeto personalizado | Classe base para interface do usuário | Comportamento de edição padrão se nenhuma interface do usuário personalizada é fornecida |
---|---|---|
Tarefa | IDtsTaskUI | Somente a janela Propriedades |
Gerenciador de conexões | IDtsConnectionManagerUI | Somente a janela Propriedades |
Provedor de log | IDtsLogProviderUI (Não implementado no Integration Services) |
Caixa de texto na coluna Configuração |
Enumerador | ForEachEnumeratorUI | Somente a janela Propriedades. A área Configuração do Enumerador do editor está vazia. |
Componente de fluxo de dados | IDtsComponentUI | Editor Avançado |
Recursos externos
- Entrada de blog, O processo de criação de solução do Visual Studio dá um aviso sobre a dependência indireta no assembly do .NET Framework devido a referências SSIS, em blogs.msdn.com.
Consulte Também
Persistência de objetos personalizados
Compilando, implantando e depurando objetos personalizados