locked
SSIS + PROCEDURE OUTPUT + RESULT SET + FLAT FILE DESTINATION RRS feed

  • Pergunta

  • Prezados, bom dia!

    Estou tentando tornar uma solução possível mas estou barrando em algumas questões. O cenário que possuo é o seguinte, geração de arquivos em diferentes caminhos, hoje feito via xp_cmdshell + bcp out. Solução que gostaria de alterar para utilização de pacotes SSIS.

    Inicial imaginei o seguinte:

    - Pacote Genérico com parâmetro de entrada a procedure que deverá executar e gerar o result do relatório. 

    - A execução dessa unica procedure retornaria em parameter output o caminho do arquivo a ser usado no Flat File Destination assim como result set do conteúdo desse arquivo.

    A limitação que encontrei é que o parameter output só é coletado via "Execute SQL Task" e a geração de arquivo é feita de forma mais pratica usando o DataFlow + OLE DB Source + Flat File Destination, onde este não permite o "Execute SQL Task". O OLE DB Source aparenta não conseguir utilizar o output da procedure jogando o valor deste na variável de scopo de package como o "Execute SQL Task" consegue.

    Será que fiz algo de errado para o OLE DB Source não conseguir usar o output parameter e Result Set no memso componente? Ou essa limitação é real? Alguém sugeriria outro fluxo? A ideia de usar em uma unica procedure é por que cada arquivo é gerado em um caminho diferente com uma nomenclatura diferente com valores dinâmicos.

    Obrigado!

    Att;

    quinta-feira, 30 de junho de 2016 09:36

Respostas

  • NaAreaDeTI,

    Você pode usar o OLE DB Source chamando uma procedure e retornando seu result set e output juntos, basta configurar em "Parameters". O problema é que o OLE DB Source não é capaz de atualizar uma variável (que no seu caso é o caminho do arquivo), você consegue utilizar esse novo valor (output) fora do contexto do "Data Flow Task", ou seja, após a execução dele.

    Uma alternativa, até mais indicada, é receber os caminhos e parâmetros em uma tabela de configuração através de um Execute SQL Task, percorrer essa lista através de um Foreach Loop Container e então gerar os arquivos em um Data Flow Task da forma que você está fazendo com OLE DB Source + Flat File Destination, ficando assim:

     

    Abraço.

    quarta-feira, 6 de julho de 2016 03:56

Todas as Respostas

  • NaAreaDeTI,

    Você pode usar o OLE DB Source chamando uma procedure e retornando seu result set e output juntos, basta configurar em "Parameters". O problema é que o OLE DB Source não é capaz de atualizar uma variável (que no seu caso é o caminho do arquivo), você consegue utilizar esse novo valor (output) fora do contexto do "Data Flow Task", ou seja, após a execução dele.

    Uma alternativa, até mais indicada, é receber os caminhos e parâmetros em uma tabela de configuração através de um Execute SQL Task, percorrer essa lista através de um Foreach Loop Container e então gerar os arquivos em um Data Flow Task da forma que você está fazendo com OLE DB Source + Flat File Destination, ficando assim:

     

    Abraço.

    quarta-feira, 6 de julho de 2016 03:56
  • Olá, por falta de resposta este post foi encerrado.

    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 14 de agosto de 2018 11:49
    Moderador