none
Variaveis GLOBAL SSIS para todos pacotes criados é possível ? RRS feed

  • Pergunta

  •  

    Oi Amigos, Preciso de uma ajuda.

    Eu criei diversos pacotes simples(+ ou - 20) onde cada pacote faz uma conexão com o ORACLE, roda uma SQL simples no transformation e descarrega em uma tabela no banco SQL.

    So que tenho um problema. Todos os SQL feitos no ORACLE atraves da ferramenta transformation possuem uma data como parametro.

    como posso criar uma variavel global no SSIS, quando mudo a data modifica em todos os pacotes ? Ou seja, na ferramenta transformation onde está o código SQL do ORacle eu colocaria essa variavel global.


    assim, setando essa variavel todos os pacotes assumiriam determinada data.

    É possível ? como posso fazer ?

     

    Muito Obriado

    quinta-feira, 4 de setembro de 2008 14:53

Todas as Respostas

  • Bom Dia,

     

    As variáveis globais tem escopo de pacote e não há como definir uma variável global para todos os pacotes. O que você pode fazer é colocar os valores desejados em um arquivo XML ou uma variável de ambiente e fazer com que seus pacotes leiam esses valores. Você pode até usar variáveis globais e ao executar o pacote fazer com que as variáveis globais leiam valores do arquivo xml ou das variáveis de ambiente.

     

    Se for optar pela primeira alternativa, procure conhecer mais sobre Package Configuration (há um webcast ministrado pelo Roberto sobre esse assunto). Se for optar pela segunda alternativa, carregue os valores com a tarefa Script Task.

     

    Esse tipo de solicitação foi feito durante o BETA do SSIS 2005. Não sei se o SSIS 2008 contemplou tal alteração. Havia algo semelhante a compartilhar conexões entre pacotes.

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 4 de setembro de 2008 15:00
  • Bom dia Gustavo !

     

    Mas, se eu criar a segunda opção script TASK é possível usar essa variável na coneção Oracle no tranformation ?

     

    Exemplo:

     

    SELECT NOME

    FROM sys.clientes

    WHERE data = VARIAVEL GLOBAL

     

    Abs,

     

     

    quinta-feira, 4 de setembro de 2008 16:26
  • Joie,

     

    Acredito que sim, você já criou esta variável em seu DataFlow?

    quinta-feira, 4 de setembro de 2008 16:46
  • Boa Tarde,

     

    O Script Task seria apenas para recuperar um valor externo (Arquivo ou Variável de Ambiente) e colocar em uma variável global. É possível utilizar variáveis globais para o que você está querendo. Ao invés de selecionar uma tabela, você deve selecionar uma consulta e colocar a variável como parâmetro, ou se preferir, use a opção command from variable e a variável global deve conter todo o comando.

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 4 de setembro de 2008 17:32
  • Amigos,

     

    É que na verdade conheço muito pouco da ferramenta. Chefe pediu tenho que me virar. rsrsrsrs Criei a variavel , mas quando coloquei a variavel no script do oracle atraves do transformation,  disse que não existia aquela coluna no script oracle ??...

     

     

    Vou apanhar um pouco aqui. Qualquer coisa eu grito..

     

     

     

     

     

    quinta-feira, 4 de setembro de 2008 18:29
  • A maneira mais fácil me parece essa mesmo, utilizar PackageConfiguration e salvar em uma tabela do SQL Server.

    Ou ainda, você pode utilizar o PackageConfiguration e buscar o valor de um "parent package", isto é, um pacote pai, que executa um ou mais pacotes filhos.

     

    Em se tratando de conexões com Oracle, é provável que os parâmetros não funcionem mesmo. Tente compor sua instrução SQL via Script Task, e salvá-la em uma variável do tipo string. No SQL Task (ou OLE DB Source), aponte para essa variável do tipo String.

    quinta-feira, 4 de setembro de 2008 18:51
  •  

    Bom ,amigos, seguindo as dicas de vcs fiz o seguinte:

     

    1 - Criei uma variavel no scopo do pacote.

    2 - Setei essa variavel com um valor qualquer

    3 - Criei outra variavel scopo pacote como string (Essa variavel tem minha declaracao SQL)

     

    Mais ou menos assim:

     

    var1 = 123

    Na propriedade  Expression da var2 eu coloquei  " SELECT * FROM TABLE WHERE COD = @[User::var1]

     

    so que quando valido a expressão através do botão Evaluate Expression, aparece tudo como texto, como fosse uma expressão só.

     

    Exemplo: aparece assim: SELECT * FROM TABLE WHERE COD = @[User::var1]

     

    não deveria aparecer assim: SELECT * FROM TABLE WHERE COD = 123

     

    Pois quando eu valido somente a variavel ele traz  123.

     

    Como posso unier  uma variavel com uma expressao string ?

     

    Pois se eu deixar como está, quando associo essa avriavel atraves do OLE DB data access mode SQL COMMAND FROM VARIABLE e executo fala que não foi declarada nenhuma variavel...

     

    Acredito que o problema está na expressão quando mesclo a expressão sQL com a variavel...

     

    Alguém, tem alguma dica ?

    Obrigado !

     

     

     

     

    segunda-feira, 8 de setembro de 2008 19:13
  • Que bom que conseguiu evoluir! No expression da var2 você deve colocar as aspas duplas, você colocou?

    "SELECT * FROM TABLE WHERE COD = " + @[User::var1]

     

    Após clicar no evaluate expression de fato, deve exibir o valor 123

    segunda-feira, 8 de setembro de 2008 19:52
  •  

    Amigo, muito obrigadoooooooo...

     

    Funcionou sim ! inclusive la no oracle.  Agradeço a expertise dos ilustres amigos.

     

    Bom, não vou fechar esse tópico ainda não. Pois essa rotina é complexa. Estarei pesquisando, mas se complicar peço ajuda aos mestres rsrsrsrsrrs

     

    Abs

     

     

    terça-feira, 9 de setembro de 2008 12:13