Utilização de Variáveis do Parent Package – SSIS 2008

No SQL Server Integration Services (SSIS) podem ser definidas variáveis com vários fins, como por exemplo actualizar propriedades de elementos do package ou construir interrogações SQL em tempo de execução.

A gestão das variáveis de um package é feita através do separador Variables no Business Intelligence Studio (o Visual Studio muda de nome para estas coisas..), acessivel através do menu SSIS>Variables. Uma das coisas que não percebi imediatamente foi a coluna “Scope”, porque, ao contrário do tipo da variável, não dá para alterar.

Isto acontece porque o scope da variável fica definido aquando da sua criação, conforme o elemento que está seleccionado: se seleccionarmos o fundo da área de desenho o scope é o package; se seleccionarmos uma das tarefas, o scope é essa tarefa (dá-me ideia que isto podia ter uma forma um bocado melhor de ser indicado…). As variáveis podem ser definidas no scope de containers: todas as control flow tasks são containers, assim como o próprio package (topo da hierarquia).

Independentemente do objectivo final, as variáveis acabam por ser utilizadas para passar dados entre elementos de um package. Além disso, podem também ser utilizadas para passar informação entre packages.

Vamos supor que, no cenário da figura acima, a variável vai conter a data da última execução do processo de integração. A data está armazenada em base de dados, sendo o valor da variável carregado a partir da tarefa LoadDate (Execute SQL Task). Para tal, é necessário mapear o result set da interrogação na variável. Como a variável contém apenas uma data, indicamos nas suas propriedades que o result set é uma única linha.

Depois, no separador Result Set indicamos o mapeamento. Neste caso, a coluna “data” é mapeada para a variável “Variable”. Assim, quando a tarefa for executada, a variável contém o valor da data lido da base de dados.

De seguida são eecutadas uma qualquer tarefa de Data Flow e a tarefa que invoca o ChildPackage. Vamos admitir que ambos necessitam da data da última execução para filtrar dados numa interrogação SQL. Precisamos então de passar o valor da variável ao ChildPackage, colocando-o, por exemplo, numa outra variável aí definida.

A utilização de variáveis do package “pai” pode ser feita de forma simples através da configuração do package “filho”. Para tal, acedemos ao menu SSIS>Package Configurations, activando as configurações e adicionando uma nova configuração do tipo Parent package variable.

Passando à página seguinte, podemos indicar a utilização pretendida para o valor da variável. Neste caso, estou a colocá-lo noutra variável do package filho (mostrada na figura de cima), mas podemos colocar o valor em qualquer propriedade dos elementos do package actual.

Quando o ParentPackage invoca o ChildPackage, as configurações são executadas antes das tarefas do package.

Leave a comment