Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
Crie um novo projeto de Type Class Library na sua linguagem de programação gerida preferida.
Herda da classe base apropriada, como mostrado na tabela seguinte.
Aplique o atributo apropriado à sua nova turma, conforme mostrado na tabela seguinte.
Substitua os métodos da classe base conforme necessário e escreva código para a funcionalidade personalizada do seu objeto.
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.
Opcionalmente, mostre um link para amostras e conteúdos de Ajuda para o objeto personalizado, na Caixa de Ferramentas SSIS.
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 |
Fornecimento de Links para Amostras e Conteúdos de Ajuda
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.
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 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 |