Para iniciar o desenvolvimento dos pacotes no SSIS (SQL Server Integration Services) é importante ter um conhecimento básico sobre sua arquitetura. Com esse conhecimento o desenvolvedor será mais ágil e assertivo em seus projetos. Ter o conhecimento sobre a arquitetura facilita e muito, pois no SSIS temos diversos componentes e diversos arquivos, o que causa uma confusão quando está se iniciando no desenvolvimento.

O primeiro passo é entender quais os componentes que existem. Temos a Solução (Solution), o Projeto (Project), os Pacotes (Package), as Tarefas (Tasks), etc. O segundo passo é entender que existe uma hierarquia entre esses componentes. Por exemplo, o “pai” da hierarquia (ou componente em maior nível) seria a Solução, que por sua vez é formada por um ou mais Projetos. Já os Projetos são formados por um ou mais Pacotes e assim por diante.

Confira nossos cursos de Banco de Dados e fique por dentro de tudo que rola de novidade no mundo dos DBA's.

Um componente em maior nível é formado por componentes de menor nível.

Essa relação entre os componentes pode ser visualizada na Figura 1.

Hierarquia dos componentes
SSIS.

Figura 1 – Hierarquia dos componentes SSIS.

Podemos perceber que o componente de maior nível é a Solução e o que está no menor nível é o Fluxo de Dados (Data Flow). Além da hierarquia, podemos perceber a composição desses componentes, por exemplo, o Pacote é formado por arquivos “.dtsx” e o Fluxo de Controle (Control Flow) é formado por Tarefas e Containers.

A seguir teremos uma visão geral de cada componente do SSIS.

Solução (Solution)

A Solução é o “recipiente macro”. Nela pode-se gerenciar um ou mais Projetos. A ideia da Solução é reunir todos os Projetos necessários para uma Solução de Negócio. Uma Solução pode incluir diferentes tipos de Projeto, por exemplo, pode conter um Projeto de SSIS e outro projeto de SSAS (SQL Server Analyses Services).

Geralmente quando se cria um novo Projeto SSIS, temos a associação de um Projeto para uma Solução, inclusive o nome permanece igual para ambas. Mas essa é uma opção “default” e o desenvolvedor pode adicionar vários Projetos para uma Solução, de acordo com sua necessidade, conforme Figura 2.

Solução formada com vários
Projetos de SSIS

Figura 2 – Solução formada com vários Projetos de SSIS.

A Solução possui dois arquivos associados:

  • Arquivo com a extensão “.SUO”: Contém informações sobre as preferências do desenvolvedor para trabalhar com a Solução.
  • Arquivo com a extensão “.SLN”: Contém informações sobre as configurações da Solução e a lista dos Projetos. Geralmente é o arquivo utilizado para “abrir” a Solução utilizando um duplo clique. Será aberto o BIDS (Business Intelligence Development Studio) com os projetos prontos para desenvolvimento.

A Solução possui suas Propriedades (Properties) que podem ser configuradas de acordo com a necessidade do desenvolvedor.

Projeto (Project)

O Projeto é o recipiente onde se desenvolvem os Pacotes. Vale lembrar que também são desenvolvidos no Projeto o Data Source e o Data Source View.

Um projeto pode conter um ou vários Pacotes, como podemos visualizar na Figura 3.

Projeto formado por vários Pacotes

Figura 3 – Projeto formado por vários Pacotes.

Os Projetos possuem três arquivos associados:

  • Arquivo com a extensão “.dtproj”: Possui as configurações do Projeto e lista de Pacotes. Dando um duplo clique nesse arquivo abre o Projeto.
  • Arquivo com a extensão “.dtproj.user”: Possui informações sobre as preferências do desenvolvedor para trabalhar com o Projeto.
  • Arquivos com a extensão “.database”: Possui informações necessárias para o BIDS (Business Intelligence Development Studio) abrir o Projeto.

Cada Projeto também possui suas Propriedades específicas.

Pacotes (Packages)

O Pacote é o recipiente onde se desenvolvem os fluxos. Esses fluxos podem ser de Controle (Control Flow) ou de Dados (Data Flow).

Quando se cria um Pacote ele é um recipiente vazio. Para o Pacote funcionar deve ser adicionado no mínimo um Fluxo de Controle.

Os pacotes podem ser salvos como arquivos comuns que possuem a extensão “.dtsx” ou podem ser salvos no SQL Server.

Assim como a Solução e o Projeto, os Pacotes também possuem suas próprias Propriedades.

Fluxos de Controle (Control Flow)

Os Fluxos de Controle são os principais componentes do Pacote. Os principais itens de um Fluxo de Controle são os Containers e as Tarefas (Tasks).

Os Containers são utilizados para repetição, agrupamento e organização das Tarefas. Além das tarefas um Container pode conter outros Containers.

As Tarefas, como o próprio nome diz, tem a função de executar uma funcionalidade. Essas funcionalidades são definidas de acordo com a tarefa escolhida. Por exemplo, há tarefas para executar instruções SQL, tarefas para executar processos, tarefas para manipular arquivos do sistema, tarefas para utilizar Script VB ou C# e etc.

Com os fluxos de controle podemos mover ou deletar arquivos, executar uma consulta ou procedure em um banco de dados, executar um outro programa (.exe), acessar e processar um cubo no Analyses Services, consultar um Web Services, enviar um e-mail, realizar Backup de um Banco de Dados e etc. Cada tarefa dá uma possibilidade diferente de acordo com as necessidades do desenvolvedor.

A principal Tarefa é a de Fluxo de Dados (Data Flow).

Todas as Tarefas e Containers no Fluxo de Controle possuem suas próprias Propriedades.

Na Figura 4 verificamos a estrutura de um Pacote com as Tarefas de Fluxo de Controle.

Pacote e as Tarefas de Fluxo
de Controle

Figura 4 – Pacote e as Tarefas de Fluxo de Controle.

Fluxo de Dados (Data Flow)

Quando se inicia em SSIS, uma das maiores confusões é identificar o que é Fluxo de Controle e o que é Fluxo de Dados. Bem, resumidamente, o Fluxo de Dados nada mais é que uma Tarefa do Fluxo de Controle. Isso mesmo, Data Flow é uma Task, pode conferir na Toolbox do Control Flow. Só que não é uma Task como as outras, é especial, tanto é que tem uma aba só para ela.

Pense da seguinte forma: Data Flow é a Task mais complexa SSIS.

E quando devo usar o Fluxo de Dados? A resposta é simples: Quando necessitar de uma transferência de dados.

O Fluxo de Dados serve para Importar, exportar e transformar dados, o famoso ETL (Extract, Transform and Load). Essa transferência pode ser de um arquivo de texto para um Banco de Dados, de um Banco de Dados para um arquivo Excel, entre Bancos diferentes (SQL Server e Oracle) e etc.

O Fluxo de Dados possui seus próprios componentes (assim como o Fluxo de Controle), porém tem outros nomes: são as Origens (Data Flow Sources), as Transformações (Data Flow Transformations) e os Destinos (Data Flow Destinations).

Podemos ter como Origem e Destino conexões OLDB, ADO NET, Excel, Flat File (Arquivos de texto), XML e etc.

Como Transformação podemos ter o OLDB Command, Sort, Pivot, Derived Column, Data Conversion, Lookup e etc.

Todas as Origens, Transformações e Destinos do Fluxo de Dados possuem suas próprias Propriedades.

Na Figura 5 temos a relação entre Fluxo de Controle e Fluxo de Dados.

Relacionamento entre Control
Flow e Data Flow

Figura 5 – Relacionamento entre Control Flow e Data Flow.

Restrições de Precedência (Precedence Constraints)

Popularmente conhecidas como “setinhas”, são responsáveis por ligar dois executáveis. Para executáveis entenda Tarefas, Containers e etc. O nome está associado ao funcionamento. O segundo executável (constraint) só executará dependendo do resultado da execução do primeiro executável (precedence).

O resultado de execução pode ser:

  • Completion: Exige apenas que o executável de precedência seja concluído, independente do resultado.
  • Success: O executável de precedência deve ser execultado com sucesso.
  • Failure: O executável de precedência deve falhar. Geralmente utilizado para tratamentos de erro.

Na Figura 6 verificamos o funcionamento do Precedence Constraint.

Precedence Constraint

Figura 6 – Precedence Constraint.

Aqui abordamos os principais aspectos da arquitetura do SSIS. Vale lembrar que a arquitetura vai além do aqui apresentado, porém o conteúdo desse artigo já possibilita futuros desenvolvedores terem uma noção básica para seus passos iniciais.

Ressalto aqui também que os Pacotes têm outros componentes além dos aqui citados como, por exemplo, Variáveis (Variables), Gerenciador de Conexões (Connection Managers), Manipulador de Eventos (Event Handlers) e etc. Porém, esses itens não estão no escopo desse artigo.

Referências