none
Encapsulando Pacotes RRS feed

  • Pergunta

  •  

    Boa tarde galera,

     

    Eu tenho um SSIS(filho) pequeno responsável por um determinado passo. Esse passo gera um variável global. Eu em outro SSIS(pai) chamo esse fiho .

    Bem, çpreciso que o pai receba em uma variável o valor da variável gerada no filho!!

     

    alguém ai pode me ajudar?!!?

     

    Abraço a todos,

     

    chapolin.rio@gmail.com

    sexta-feira, 7 de março de 2008 17:20

Respostas

  • Bom dia Chapolin,

     

    o cenário que você descreve eu ainda não testei. O que sei que funciona é: criar a variável no pacote pai, e acessá-la no pacote filho, inclusive alterando seu valor.  Imagino que isto possa servir para você, correto?

     

    Para testar, crie dois pacotes, PacotePai e PacoteFilho. Crie a variável "VariavelPacotePai" no PacotePai; adicione o Execute Package Task (EPT) e aponte para o pacote filho. No pacote filho, adicione um script task; a variável pode ser alterada exatamente como qualquer variável do pacote filho (todas as variáveis do escopo do EPT ficam disponíveis para o pacote filho). Veja o código do pacote filho:

     

     

    Code Snippet

     

    Dim vars As Variables

    Dts.VariableDispenser.LockForWrite("VariavelPacotePai")

    Dts.VariableDispenser.GetVariables(vars)

     

    vars("VariavelPacotePai").Value = "Valor Alterado!!!"

    Dts.TaskResult = Dts.Results.Success

     

     

    Já deu para sacar como se faz. Se interessar, a descrição completa destes pacotes está no meu blog: http://ssisbrasil.spaces.live.com
    segunda-feira, 10 de março de 2008 12:59

Todas as Respostas

  • Bom dia Chapolin,

     

    o cenário que você descreve eu ainda não testei. O que sei que funciona é: criar a variável no pacote pai, e acessá-la no pacote filho, inclusive alterando seu valor.  Imagino que isto possa servir para você, correto?

     

    Para testar, crie dois pacotes, PacotePai e PacoteFilho. Crie a variável "VariavelPacotePai" no PacotePai; adicione o Execute Package Task (EPT) e aponte para o pacote filho. No pacote filho, adicione um script task; a variável pode ser alterada exatamente como qualquer variável do pacote filho (todas as variáveis do escopo do EPT ficam disponíveis para o pacote filho). Veja o código do pacote filho:

     

     

    Code Snippet

     

    Dim vars As Variables

    Dts.VariableDispenser.LockForWrite("VariavelPacotePai")

    Dts.VariableDispenser.GetVariables(vars)

     

    vars("VariavelPacotePai").Value = "Valor Alterado!!!"

    Dts.TaskResult = Dts.Results.Success

     

     

    Já deu para sacar como se faz. Se interessar, a descrição completa destes pacotes está no meu blog: http://ssisbrasil.spaces.live.com
    segunda-feira, 10 de março de 2008 12:59
  • Half,

     

    Obrigado pela ajuda. No final de semana eu acabei descobindo como fazer. É isso mesmo que vc falou, porém tem umas diferenças, mínimas no código. Segue abaixo um código sem erros caso interesse.

    Mais uma vez obrigado mesmo!!

     

    Dim pkg As String = "C:\temp\InvokedFromScript.dtsx"
    Dim app As Application = New
    Application()
    Dim p As Package = app.LoadPackage(pkg, Nothing
    )
    p.Variables(
    "PassedIn").Value = Dts.Variables("PassedIn"
    ).Value
    p.Execute()
    Dts.Variables(
    "PassedBack").Value = p.Variables("PassedBack").Value

     

    Abraço,

     

    Chapolin.rio@gmail.com

    segunda-feira, 10 de março de 2008 14:17