Desenvolvendo objetos personalizados para o Integration Services

Quando os objetos fluxo de controle e fluxo de dados incluídos no SQL Server Integration Services não atendem totalmente aos seus requisitos, você pode desenvolver muitos tipos de objetos personalizados, incluindo:

  • Tarefas personalizadas.

  • Gerenciadores de conexões personalizadas.   Conectam-se a fontes de dados externas sem suporte no momento.

  • Provedores de log personalizados.    Registram eventos de pacote em formatos sem suporte no momento.

  • Enumeradores personalizados.   Dão suporte à iteração de um conjunto de formatos de objetos ou valores sem suporte no momento.

  • 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 Comparando soluções de script e objetos personalizados.

Para obter exemplos do funcionamento de cada tipo de objeto, consulte os exemplos do Integration Services no Codeplex.

Etapas para desenvolver um objeto personalizado para o Integration Services

Quando você 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 tempo de execução 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:

  1. Crie um projeto novo do tipo Biblioteca de Classes na linguagem de programação gerenciada de sua preferência.

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

  3. Aplique o atributo apropriado em sua classe nova, como mostrado na tabela seguinte.

  4. Substitua os métodos da classe base, conforme requerido, e grave o código para a funcionalidade personalizada de seu objeto.

  5. 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.

  6. Compile, implante e depure seu novo objeto personalizado conforme descrito em Compilando, implantando e depurando objetos personalizados.

Classes base, atributos e métodos importantes

Esta 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.

Fornecendo uma interface do usuário personalizada

Para permitir que os usuários de seu objeto personalizado configurem suas propriedades, você também pode ter que 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çãoObservaçã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 não são implementadas para provedores de log personalizados 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

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os downloads, artigos, exemplos e vídeos mais recentes da Microsoft, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN ou TechNet:

Para receber uma notificação automática sobre essas atualizações, assine os feeds RSS disponíveis na página.