Desenvolvimento de Objetos Personalizados para os Serviços de Integração

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

Quando os objetos de fluxo de controlo e de fluxo de dados incluídos no SQL Server Integration Services não cumprem completamente os seus requisitos, pode desenvolver muitos tipos de objetos personalizados por si próprio, incluindo:

  • Tarefas personalizadas.

  • Gestores de ligações personalizados. Ligue-se a fontes de dados externas que atualmente não são suportadas.

  • Fornecedores de registos personalizados. Registar eventos em formatos que atualmente não são suportados.

  • Enumeradores personalizados. Suporta iterações sobre um conjunto de objetos ou formatos de valores que atualmente não são suportados.

  • Componentes personalizados de fluxo de dados. Podem ser configurados como fontes, transformações ou destinos.

O modelo de objetos Integration Services facilita este desenvolvimento personalizado com classes base que fornecem uma estrutura consistente e fiável para a sua implementação personalizada.

Se não tiver de reutilizar funcionalidades personalizadas em vários pacotes, a tarefa Script e o componente Script dão-lhe todo o poder de uma linguagem de programação gerida com significativamente menos código de infraestrutura para escrever. Para mais informações, consulte Comparando Soluções de Scripting e Objetos Personalizados.

Etapas no Desenvolvimento de um Objeto Personalizado para Serviços de Integração

Quando desenvolve um objeto personalizado para uso nos Serviços de Integração, desenvolve uma Biblioteca de Classes (uma DLL) que será carregada em tempo de design e execução pelo SSIS Designer e pelo runtime dos Serviços de Integração. Os métodos mais importantes que deve implementar não são aqueles que chama do seu próprio código, mas sim métodos que o runtime chama em momentos apropriados para inicializar e validar o seu componente e invocar a sua funcionalidade.

Aqui estão os passos que segue para desenvolver um objeto personalizado:

  1. Crie um novo projeto de Type Class Library na sua linguagem de programação gerida preferida.

  2. Herda da classe base apropriada, como mostrado na tabela seguinte.

  3. Aplique o atributo apropriado à sua nova turma, conforme mostrado na tabela seguinte.

  4. Substitua os métodos da classe base conforme necessário e escreva código para a funcionalidade personalizada do seu objeto.

  5. Opcionalmente, constrói uma interface personalizada para o teu componente. Para facilitar a implementação, pode querer desenvolver a interface de utilizador como um projeto separado dentro da mesma solução, e construí-la como um assembly separado.

  6. Opcionalmente, mostre um link para amostras e conteúdos de Ajuda para o objeto personalizado, na Caixa de Ferramentas SSIS.

  7. Construa, implemente e depure o seu novo objeto personalizado conforme descrito em Construir, Implementar e Depurar Objetos Personalizados.

Classes Base, Atributos e Métodos Importantes

Esta tabela fornece uma referência fácil para os elementos mais importantes no modelo de objetos Integration Services para cada tipo de objeto personalizado que pode desenvolver.

Objeto personalizado Classe base Attribute Métodos importantes
Tarefa Task DtsTaskAttribute Execute
Gestor de ligações ConnectionManagerBase DtsConnectionAttribute AcquireConnection, ReleaseConnection
Provedor de Logs LogProviderBase DtsLogProviderAttribute OpenLog, Log, CloseLog
Recenseador ForEachEnumerator DtsForEachEnumeratorAttribute GetEnumerator
Componente de fluxo de dados PipelineComponent DtsPipelineComponentAttribute ProvideComponentProperties, PrimeOutput, ProcessInput

Para mostrar um link na SSIS Toolbox para exemplos e conteúdos de Ajuda para um objeto personalizado escrito em código gerido, utilize as seguintes propriedades.

Para mostrar um link para exemplos e conteúdos de Ajuda para um objeto personalizado escrito em código nativo, adicione entradas no ficheiro Registry Script (.rgs) para SamplesTag, HelpKeyword e HelpCollection. A seguir encontra-se um exemplo.

val HelpKeyword = s 'sql11.dts.designer.executepackagetask.F1'

val SamplesTag = s 'ExecutePackageTask'

Fornecer uma Interface de Utilizador Personalizada

Para permitir que os utilizadores do seu objeto personalizado configurem as suas propriedades, poderá ter de desenvolver também uma interface de utilizador personalizada. Nos casos em que uma interface personalizada não é estritamente obrigatória, pode optar por criar uma para proporcionar uma interface mais amigável do que o editor padrão.

Num projeto ou assembly personalizado de interface de utilizador, geralmente existem duas classes: -a classe que implementa uma interface de Serviços de Integração para interfaces de utilizador do tipo específico de objeto personalizado, e o formulário Windows que apresenta para recolher informação do utilizador. As interfaces que implementas têm apenas alguns métodos, e uma interface personalizada não é difícil de desenvolver.

Note

Muitos fornecedores de registo de Serviços de Integração têm uma interface de utilizador personalizada que implementa IDtsLogProviderUI e substitui a caixa de texto de Configuração por uma lista suspensa filtrada dos gestores de ligação disponíveis. No entanto, interfaces de utilizador personalizadas para fornecedores de registos personalizados não são implementadas nesta versão dos Serviços de Integração. Especificar um valor para a UITypeName propriedade de não DtsLogProviderAttribute tem efeito.

A tabela seguinte fornece uma referência fácil às interfaces que deve implementar quando desenvolve uma interface de utilizador personalizada para cada tipo de objeto personalizado. Também explica o que o utilizador vê se optar por não desenvolver uma interface personalizada para o seu objeto, ou se falhar em ligar o seu objeto à sua interface usando a propriedade UITypeName no atributo do objeto. Embora o poderoso 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 gestores de ligações, e um enumerador ForEach personalizado não pode ser configurado sem um formulário personalizado.

Objeto personalizado Classe base para interface de utilizador Comportamento de edição por defeito se não for fornecida uma interface de utilizador personalizada
Tarefa IDtsTaskUI Apenas janela Propriedades
Gestor de ligações IDtsConnectionManagerUI Apenas janela Propriedades
Provedor de Logs IDtsLogProviderUI

(Não implementado nos Serviços de Integração)
Caixa de texto na coluna Configuração
Recenseador ForEachEnumeratorUI janela Propriedades apenas. A área de configuração do enumerador do editor está vazia.
Componente de fluxo de dados IDtsComponentUI Editor Avançado