none
Insert Into Bancos diferentes RRS feed

  • Pergunta

  • Pessoal,

    Estou desenvolvendo um trabalho no qual preciso buscar informações no banco1 e inserir no banco2, porém não consegui fazer a string de conexão para tal.

    A idéia é fazer um Insert Into [TblBanco2] from Select * from [TblBanco1]

    Alguém pode me ajudar com a sintaxe?

    Obrigado
    Bruno Silva Leite Office Developer officevb.blogspot.com
    segunda-feira, 4 de outubro de 2010 22:48

Respostas

  • Bom dia 

    O correto seria se fosse os bancos de dados no mesmo lugar:

    INSERT INTO tabela_a_receber ( campo1, campo2,campo3)

    SELECT * FROM tabela_a_buscar 

    --SEM VALUES neste  caso, mas tem que saber que as tabelas tem que ter os mesmos tipo de dados(campos).

    Se for no caso usando LINKED SERVER :

    INSERT INTO tabela_a_receber ( campo1, campo2,campo3)

    SELECT *  FROM NOME_LINKED_SERVER.NOME_BANCO_DADOS.dbo.NOME_TABELA AS tabela_a_buscar 


    att. Carlos Fernando Se útil, classifique!!!
    • Marcado como Resposta Eder Costa quarta-feira, 15 de dezembro de 2010 12:44
    terça-feira, 5 de outubro de 2010 16:19

Todas as Respostas

  • Insert Into NomeDoBancoDestino.dbo.Tabela 

        Select * from NomeDoBancoOrigem.dbo.Tabela



    Mais ou menos isso... ou tem um 'VALUES' no meio, não lembro bem... mas funciona
    segunda-feira, 4 de outubro de 2010 22:55
  • Caso os bancos estejam em locais diferentes, você terá que utilizar linked server.

    []´s


    Fernando Orbite
    Blog
    ValeLigado Consultoria
    segunda-feira, 4 de outubro de 2010 23:55
  • Bom dia 

    O correto seria se fosse os bancos de dados no mesmo lugar:

    INSERT INTO tabela_a_receber ( campo1, campo2,campo3)

    SELECT * FROM tabela_a_buscar 

    --SEM VALUES neste  caso, mas tem que saber que as tabelas tem que ter os mesmos tipo de dados(campos).

    Se for no caso usando LINKED SERVER :

    INSERT INTO tabela_a_receber ( campo1, campo2,campo3)

    SELECT *  FROM NOME_LINKED_SERVER.NOME_BANCO_DADOS.dbo.NOME_TABELA AS tabela_a_buscar 


    att. Carlos Fernando Se útil, classifique!!!
    • Marcado como Resposta Eder Costa quarta-feira, 15 de dezembro de 2010 12:44
    terça-feira, 5 de outubro de 2010 16:19
  • Pessoal, obrigado pela ajuda

    A solução do linked server permitiu que eu avançasse com o trabalho, porém não consegui concluir a tarefa ainda. Como as bases estão em servidores diferentes, em partes eu resolvi.

    Com o linked server eu teria que usar o

    insert into [tbl1] from OPENQUERY(NOME_LKD,'select * from [tbl] Where Campo=' + @P1 +')

    Porém o OPENQUERY não permite o uso de paramêtros, tentei de várias formas e não consegui resolver

    tentei também utilizando a seguinte sintaxe

    set @sql='select * from [tbl] where campo=' + @P1 +'

    exec @ sql at [./NOME_LKD]

    Solicitei a criação ao DBA da strored procedure na base que não tenho permissão de criação, porém eta solução, além de demorada não permite que eu altere facilmente a stored.

    Alguém tem alguma idéia de como posso resolver esta questão? realizar uma consulta parametrizada em outro server através do linked server, e com o resultado desta consulta inserir em outro servidor ?

    Obrigadp

     


    Bruno Silva Leite Office Developer officevb.blogspot.com
    quarta-feira, 6 de outubro de 2010 01:12
  • Caso seja em servidores diferentes...

    E se fizesse uma operação com DTS ? Import, Export Data

    acho que isso tem em todas as versões do Sql Server né?

     

    um servidor pode se conectar a outro para migração de dados

    • Sugerido como Resposta Eder Costa quarta-feira, 15 de dezembro de 2010 12:44
    quarta-feira, 6 de outubro de 2010 18:28
  • Bom pelo que entendi você esta tentando migrar alguns dados de um instancia do sql server que se localiza em um servidor para outra intancia que se localiza em outro servidor.

    Se for isso, utilize o que Julio C. informa, Utilize DTS ou  faça o select que vc deseja passando parametro pela clausula WHERE em seguida salve esta consulta em CSV, importe a mesma para uma planilha de excel, apos isso importar a planilha com o conteudo do CSV para a Instancia desejada.

     

     

    Qualquer Duvida a disposição. 


    Todos tem direito ao sucesso, basta ser determinado no que tanto deseja nesta vida!
    sexta-feira, 8 de outubro de 2010 19:59
  • Feheze,

    concordo que seria uma pratica interssante exportar antes para o excel

     

    mas, no caso de ele ter acesso aos dois servidores simultaneamente, algo impede de que ele extraia os dados diretamente da origem ao destino?

     

     

    []s

    sábado, 9 de outubro de 2010 14:49
  • Não ele só iria ter mais um trabalho, de extrair para excel duas vezes pois existe duas bases cada uma em seu servidor, se o mesmo estiver um linked server configurado seria mais facil fazer um insert com select ao desejado!
    Todos tem direito ao sucesso, basta ser determinado no que tanto deseja nesta vida!
    quarta-feira, 13 de outubro de 2010 11:58
  • ah sim, nesse caso sim

     

    Certo

     

    []s

    sexta-feira, 15 de outubro de 2010 21:02