none
Lendo uma View de um Banco e salvando em minhas Tabelas RRS feed

  • Pergunta

  • Pessoal, sou um iniciante em SQL Server e estou precisando da ajuda de vocês.

    Preciso fazer uma integração onde uma outra empresa disponibilizou algumas views no Banco dela.

    O que eu preciso fazer é ler essas Views e ir gravando em meu Banco. Como vocês sugerem ser a melhor opção?

    A aplicação não entra no meio dessa integração. Eu tenho que fazer isso somente no SQL Server 2008 mesmo.

     

    Obrigado!

    sexta-feira, 13 de janeiro de 2012 16:56

Respostas

  • André, boa tarde.

     

    Como estão esses bancos (o seu e o da empresa que possui as views)?
    Estão no mesmo servidor? Estão conectados por Linked Server?

    Se estiverem, por exemplo, na mesma instância, é tranquilo, basta fazer um INSERT.. SELECT (caso suas tabelas tenham a mesma estrutura que o retorno da view.

    Por favor detalhe mais o seu problema.

     

    []'s


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */
    sexta-feira, 13 de janeiro de 2012 17:25
  • Andre,

     

    De forma simples, o que eu faria:

    1 - Remova os dados soa seu cliente, não ha necessidade de voce ficar utilizando o banco de dados dele, por que, se for via linked server ainda, voce tambem ira sofrer com a queda de performance, então tome muito cuidado, portanto, minha recomendação é primeiramente criar tabelas de dados temporarios até (Antes da carga, de um truncate nelas...) e faça essa transferencia, com os dados em seu ambiente, podemos começar nosso processamento.

    2 - Aplique as regras de negocio colocando os dados dessas tabelas de dados temporarios em tabelas temporarias, e então, arrume para sua estrutura fixa de dados.

    3 - Joins e Non-Equi join podem, e com certeza irão ajudar.

    4 - A sugestão da utilização do Integration é interessante, porem, se não estão em outro servidor, creio que seja um trabalho desnecessario.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    terça-feira, 17 de janeiro de 2012 02:07
    Moderador
  • André adicionalmente vc pode utilizar o lookup task. Esta task do integration Services faz um espécie de cruzamento de dados na tabela de destino através de uma  chave estabelecida no processo e verifica se existem novos registros (no match´s output). Aí vc pode direcionar o seu workflow para uma rotina de insert e os registros encontratos (match´s output) para uma rotina de atualização.

    Já que os dados estão em um mesmo servidor, a sugestão da Mariana é legal tb e as regras podem ser desenvolvidas em T-SQL.

    Abs.


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

    sexta-feira, 13 de janeiro de 2012 17:53

Todas as Respostas

  • André boa tarde,

    Crie um pacote SSIS para transferência dos dados. Utilize a OLE DB Source para se conectar a view do seu cliente e uma OLE DB Destination para inserir os dados em sua tabela.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    sexta-feira, 13 de janeiro de 2012 17:21
  • André, boa tarde.

     

    Como estão esses bancos (o seu e o da empresa que possui as views)?
    Estão no mesmo servidor? Estão conectados por Linked Server?

    Se estiverem, por exemplo, na mesma instância, é tranquilo, basta fazer um INSERT.. SELECT (caso suas tabelas tenham a mesma estrutura que o retorno da view.

    Por favor detalhe mais o seu problema.

     

    []'s


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */
    sexta-feira, 13 de janeiro de 2012 17:25
  • Eduardo, obrigado pela resposta. Vou dar uma estudada no que me indicou.

    Del Nero, ambos os Bancos estão no mesmo servidor!

    Um outro porém, que inclusive você levantou, é que as minhas tabelas não tem as mesmas estruturas das views. É nisso também que estou estudando como fazer.

    Detalhando um pouquinho mais:

    A outra empresa disponibilizou 5 Views para mim. O que devo fazer é de tempos em tempos, checar essas Views e verificar se há novas informações.

    Se sim, pegar essas informações, passar por algumas regras de negócios (que já estão no meu Banco em Triggers - que devo passar para Procedures) e então ir populando as minhas Tabelas com essas informações. 

    As estruturas das Views não são iguais às das minhas Tabelas. Um exemplo é que existe uma View dele que tem informação para popular 4 diferentes Tabelas minhas.

    Até agora só consegui definir como será feito esse acesso inicial, que será por um Job no SQL Server.

     

    Obrigado e boa tarde!

    :-)

    sexta-feira, 13 de janeiro de 2012 17:47
  • André adicionalmente vc pode utilizar o lookup task. Esta task do integration Services faz um espécie de cruzamento de dados na tabela de destino através de uma  chave estabelecida no processo e verifica se existem novos registros (no match´s output). Aí vc pode direcionar o seu workflow para uma rotina de insert e os registros encontratos (match´s output) para uma rotina de atualização.

    Já que os dados estão em um mesmo servidor, a sugestão da Mariana é legal tb e as regras podem ser desenvolvidas em T-SQL.

    Abs.


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

    sexta-feira, 13 de janeiro de 2012 17:53
  • Eduardo e Del Nero, obrigado pelas respostas.

    Estou avaliando qual e como será a melhor forma de fazer esse trabalho, a partir do que me indicaram!

    sexta-feira, 13 de janeiro de 2012 18:20
  • Andre,

     

    De forma simples, o que eu faria:

    1 - Remova os dados soa seu cliente, não ha necessidade de voce ficar utilizando o banco de dados dele, por que, se for via linked server ainda, voce tambem ira sofrer com a queda de performance, então tome muito cuidado, portanto, minha recomendação é primeiramente criar tabelas de dados temporarios até (Antes da carga, de um truncate nelas...) e faça essa transferencia, com os dados em seu ambiente, podemos começar nosso processamento.

    2 - Aplique as regras de negocio colocando os dados dessas tabelas de dados temporarios em tabelas temporarias, e então, arrume para sua estrutura fixa de dados.

    3 - Joins e Non-Equi join podem, e com certeza irão ajudar.

    4 - A sugestão da utilização do Integration é interessante, porem, se não estão em outro servidor, creio que seja um trabalho desnecessario.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    terça-feira, 17 de janeiro de 2012 02:07
    Moderador