Criando pacotes SSIS programaticamente usando EzAPI

Criando pacotes SSIS programaticamente usando EzAPI

Class hierarchy for the data flow engine in EzApi


No artigo publicado anteriormente, Alternativas Biml: Criando pacotes SSIS programaticamente usando o ManagedDTS, falamos sobre a criação de pacotes SSIS usando o modelo de objeto gerenciado do mecanismo SSIS (ManagedDTS). Neste artigo, ilustraremos outra alternativa Biml, que é a biblioteca de classes EzApi, e faremos uma comparação entre as duas tecnologias.

O que é a biblioteca de classes EzAPI?

Como falamos anteriormente, a Microsoft fornece um conjunto de assemblies que permite aos usuários criar, gerenciar e executar programaticamente pacotes SSIS. A principal fraqueza do uso desses conjuntos é que eles são muito complexos e difíceis de entender. Por esse motivo, a equipe do Microsoft SSIS desenvolveu uma biblioteca .Net Class chamada EzApi que facilita a automação do desenvolvimento de pacotes SSIS. Essa biblioteca de classes é desenvolvida usando C # e foi usada internamente pela equipe por um tempo. Posteriormente, foi publicado no CodePlex no projeto de amostras da comunidade do Integration Services e, posteriormente, foi migrado para o Git-Hub após o encerramento do site do Code Plex, mas esse projeto não é aprimorado por um tempo.

Após o lançamento do SQL Server 2016, Pedros Morais (desenvolvedor Full Stack) anunciou o EzApi2016, uma bifurcação do projeto original para adaptar esta biblioteca à nova versão do SQL Server. E mais tarde, esta biblioteca está disponível no NuGet e é aprimorada periodicamente. Mais informações sobre a melhoria podem ser encontradas no site da Pedro Morais.

Essa biblioteca de classes pode ser considerada como uma camada intermediária entre o aplicativo e o modelo de objeto gerenciado do SSIS. Cada objeto nesta biblioteca é mapeado para o objeto COM relacionado no SSIS. Você pode verificar a hierarquia de classes dos mecanismos de tempo de execução e fluxo de dados nas seguintes imagens (Referência: EzAPI – API de criação de pacote alternativa)

Hierarquia de classes para o mecanismo de tempo de execução no EzApi

Figura 1 – Hierarquia de classes para o mecanismo de tempo de execução

Hierarquia de classes para o mecanismo de fluxo de dados no EzApi

Figura 2 – Hierarquia de classes para o mecanismo de fluxo de dados

Conforme mostrado na hierarquia de classes do mecanismo de tempo de execução, a entidade base é o executável, que pode ser um contêiner ou uma tarefa. E no mecanismo de fluxo de dados, a entidade base é um componente que pode ser um adaptador (origem ou destino – pois eles adaptam o SSIS a uma fonte externa) ou uma transformação.

A maneira mais fácil de usar essa biblioteca de classes é abrir o console do gerenciador de pacotes NuGet no Visual studio (Ferramentas> Gerenciador de Pacotes NuGet> Console do Gerenciador de Pacotes).

Console do Openning Package Manager

Figura 3 – Abrir o console do gerenciador de pacotes NuGet

Em seguida, você deve usar o seguinte comando (0.8.93 é a versão mais recente no momento):

Saída do console do gerenciador de pacotes

Figura 4 – Captura de tela da saída do console do gerenciador de pacotes

Agora, a biblioteca de classes é adicionada como referência do projeto:

Mostrando a biblioteca de classes EzApi na referência do projeto

Figura 5 – Biblioteca de classes adicionada como referência

Se você estiver trabalhando offline, basta fazer o download e criar o projeto localmente e adicionar a biblioteca de classes gerada como referência no seu projeto.

Construindo pacotes usando o EzApi

Antes de começar, observe que pode ser necessário adicionar uma referência para os assemblies de modelo de objeto gerenciado do SSIS ao projeto, pois isso é exigido por alguns dos métodos da biblioteca de classes.

Criando um novo pacote

Primeiro de tudo, você deve importar o espaço para nome Microsoft.SqlServer.SSIS.EzAPI na classe atual:

Para criar um novo pacote e salvá-lo em um caminho local, você pode usar o seguinte código:

Carregando pacote do arquivo existente

Para carregar um pacote de um arquivo dtsx existente, você pode usar o seguinte código:

Adicionando gerenciadores de conexões

Para adicionar um gerenciador de conexões, você deve usar o EzConnectionManager ou a classe relevante do gerenciador de conexões da seguinte maneira:

Adicionando tarefas

Para adicionar uma tarefa a um contêiner (pacote ou contêiner), você deve usar a classe relacionada à tarefa e especificar o contêiner pai na inicialização da classe. Por exemplo:

Adicionando tarefas de fluxo de dados

Usando o Ezapi, adicionar tarefas é mais fácil do que o modelo de objeto gerenciado do SSIS. O código a seguir é usado para criar um pacote, adicionando um gerenciador de conexões OLE DB, adicionando uma tarefa de fluxo de dados com uma origem e destino OLE DB, a fim de transferir dados entre [Person].[Person] e [Person].[Person_temp] tabelas:

Executando pacotes

Para executar um pacote, você pode simplesmente usar o método Execute () da seguinte maneira:

Modelos de pacote

Existem alguns pacotes de modelos adicionados nesta biblioteca de classes. Como exemplo:

  • EzDataFlowPackage: um pacote que contém uma tarefa de fluxo de dados
  • EzForLoopDFPackage: um pacote que contém um loop for com uma tarefa de fluxo de dados
  • EzForLoopPackage: um pacote que contém um contêiner for loop

Esses modelos diminuem o tempo e as linhas de códigos necessárias para desenvolver pacotes.

Recursos online

O EzApi não é muito popular, mas há algum artigo on-line que você pode consultar para saber mais:

Comparando com Biml

Simplicidade

Após criar o pacote, nós o converteremos em um script Biml, conforme explicamos no artigo Convertendo pacotes SSIS em scripts Biml

Como você pode ver, o script Biml é um pouco simples que o código C # que escrevemos anteriormente. Podemos dizer que as duas tecnologias utilizadas facilitam muito mais a automação do pacote SSIS do que os assemblies tradicionais fornecidos pela Microsoft. E isso depende do histórico de programação do usuário, pois os desenvolvedores se familiarizarão mais com o EzAPI, enquanto outros funcionários ou analistas irão para o Biml.

Contexto

Como mencionamos no artigo anterior, se você precisar automatizar a criação e o gerenciamento de pacotes em um aplicativo, não poderá usar o Biml. Em outros casos, você pode escolher entre as duas tecnologias.

Tratamento de erros no desenvolvimento

O EzAPI tem a mesma limitação que o ManagedDTS, pois não mostra uma mensagem de erro clara se encontrada durante a criação do pacote:

Exceção sem sentido é lançada ao criar o pacote programaticamente usando o EzApi

Figura 6 – Exceção sem sentido lançada ao criar o pacote programaticamente

Recursos online

Mesmo que o Biml não tenha muitos recursos on-line, eles são muito mais do que o relacionado ao EzAPI, pois você pode não encontrar mais artigos do que os mencionados anteriormente (mesmo esses artigos levam muito tempo para serem reconhecidos).

Conclusão

Neste artigo, ilustramos outra alternativa do Biml chamada EzAPI, falamos brevemente sobre essa biblioteca e por que ela foi desenvolvida. Depois, explicamos como usá-la para criar e gerenciar pacotes SSIS. Finalmente, fizemos uma comparação entre as duas tecnologias.

Índice

Hadi Fadlallah
Últimas mensagens de Hadi Fadlallah (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Azure Data Explorer para iniciantes