none
Multiplas conexões SSIS RRS feed

  • Pergunta

  • Boa tarde.

    Preciso desenvolver no SSIS uma aplicação onde eu consiga fazer um select no banco destino e, de acordo com este select, atualize o banco origem.

    Tenho como fazer isso dentro do meu "Data Flow Task" ?

    Obrigado!


    quinta-feira, 25 de abril de 2013 16:29

Respostas

  • Sim é possível.

    Crie uma ADO.NET connection para o Oracle e um OLEDB connection para o SQL. Monte a query no ADO.NET Source que retorne este parametro. Armazene este parametro numa variável global e de acordo com o resultado manipule o fluxo para atualizar esta tabela no SQL.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quinta-feira, 25 de abril de 2013 18:20

Todas as Respostas

  • bzanotti, não entendi sua dúvida. Vc precisa pegar algum parâmetro neste banco de destino e de acordo com isto atualizar um outro banco ? Não seriam tabelas em específico?

    Detalhe mais sua necessidade.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quinta-feira, 25 de abril de 2013 17:01
  • Oi Eduardo.

    OK. Vou detalhar um pouco mais.

    Tenho dois bancos de dados. SQL e Oracle. Preciso consultar um parâmetro do Oracle e de acordo com ele, atualizar uma tabela do SQL server.

    Não gostaria de fazer isso via Link e sim, se possivel, fazer dentro do SSIS.

    Ficou mais claro?

    quinta-feira, 25 de abril de 2013 17:42
  • Sim é possível.

    Crie uma ADO.NET connection para o Oracle e um OLEDB connection para o SQL. Monte a query no ADO.NET Source que retorne este parametro. Armazene este parametro numa variável global e de acordo com o resultado manipule o fluxo para atualizar esta tabela no SQL.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quinta-feira, 25 de abril de 2013 18:20
  • Legal. Entendi.

    Agora te faço outra pergunta para uma outra situação um pouco mais "elaborada".

    Quero buscar registros no SQL e deletar os registros correspondentes no Oracle, ou seja, tenho "n" registros que podem ser retornados deste select no SQL.

    Tenho como guardar em um "array" esses registros do SQL e deletar os mesmos no Oracle?

    Abraço!




    sexta-feira, 26 de abril de 2013 11:04
  • Bzanotti, bom dia.

    Não precisa armazenar num array. Baseado na sua conexão Oracle, originado pelo ADO.net Connection no SSIS, vc pode criar um lookup transformation. Este componente do data flow é responsável em cruzar dados baseado em uma chave pré-definida e direcionar dados para um fluxo de match ou para outro fluxo caso seja NonMatch. Baseado nestes registro vc pode armazenar em um tabela temporária e assim, deletar os registros que vc necessita no Oracle. Vc pode cruzar dados do oracle com o SQL e vice-versa, sem se preocupar na camada de transporte de dados.

    Veja este exemplo:

    http://www.katieandemil.com/ssis-lookup-transformation-example-sql-server

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    sexta-feira, 26 de abril de 2013 12:14