Usuário com melhor resposta
Copiar conteúdo de um campo entre banco de dados diferentes

Pergunta
-
Bom dia.
Gostaria de saber se é possível diretamente no SQL Server copiar o apenas o conteúdo de um campo entre banco de dados diferentes, pois não posso apendar a tabela inteira. Como critério eu usaria o código do cliente.
DE:
Banco de dados - Dadosadv_tst (ambiente teste)
Tabela - SA1010
Campo - A1_IEPara:
Banco de dados - Dadosadv (ambiente oficial)
Tabela - SA1010
Campo - A1_IE
Não consegui encontrar como resolver isto.
Respostas
-
Macéulus
Fala para o seu DBA criar uma VIEW que conecta os dois banco de dados, fazendo os campos que você quer.
Com isso, basta você consultar a VIEW pelo nome dela e pronto.
Caso contrário, vai ter que criar um link entre os dois bancos e fazer um monte de configurações específicas de DBA como permissão de usuário e tudo mais.
Uma VIEW resolve fácil o seu problema.
Outra coisa é fazer como os outros falaram aqui no FORUM mesmo.
Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.
Mauricio Junior - Comunidade www.ecode10.com- Sugerido como Resposta Mauricio-Junior segunda-feira, 15 de agosto de 2016 15:23
- Marcado como Resposta Robson William Silva quinta-feira, 18 de agosto de 2016 12:40
Todas as Respostas
-
sim é possível
insert into Dadosadv..SA1010(A1_IE) select a.A1_IE FROM Dadosadv_tst..SA1010 as a
lembrando que se existirem outros campos na tabela destino os mesmo serão setados como Null e se existir um campo not null você tera que inserir algum valor nele ou mudar a estrutura da tabela
- Sugerido como Resposta Anderson O. Santos segunda-feira, 15 de agosto de 2016 19:16
-
Bom dia Macéulus,
Os bancos do protheus estão instalados na mesma instância do SQL?
Se sim, você precisa realizar a replicação da Inscrição Estadual da oficial para a teste?
Caso não esteja, recomendo que crie um Linked Server entre suas bases.
Em seguida, você precisará realizar um Update com um inner join, a query ficaria mais ou menos assim:
Mesma instância (sem linked server)
UPDATE DADOSADV_TST.dbo.SA1010 SET A1_IE = OFICIAL.A1_IE FROM DADOSADV.dbo.SA1010 AS OFICIAL INNER JOIN DADOSADV_TST.dbo.SA1010 AS TESTE ON OFICIAL.D_E_L_E_T_ = TESTE.D_E_L_E_T_ AND OFICIAL.A1_FILIAL = TESTE.A1_FILIAL AND OFICIAL.A1_COD = TESTE.A1_COD AND OFICIAL.A1_LOJA = TESTE.A1_LOJA
Instâncias diferentes (com linked server)
UPDATE DADOSADV_TST.dbo.SA1010 SET A1_IE = OFICIAL.A1_IE FROM LSOFICIAL.DADOSADV.dbo.SA1010 AS OFICIAL INNER JOIN DADOSADV_TST.dbo.SA1010 AS TESTE ON OFICIAL.D_E_L_E_T_ = TESTE.D_E_L_E_T_ AND OFICIAL.A1_FILIAL = TESTE.A1_FILIAL AND OFICIAL.A1_COD = TESTE.A1_COD AND OFICIAL.A1_LOJA = TESTE.A1_LOJA
LSOFICIAL foi um nome definido para o linked server, deve ser substituído pelo nome que você utilizar.
No caso estou considerando que o LS foi criado no server de teste.
Qualquer dúvida só chamar.
Abraço!
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
-
Kanaãm, bom dia.
Não esperava encontrar alguém de Protheus aqui, rs
Sim, ambos os bancos estão instalados na mesma instância.A query (mesma instância) está ao contrario não é? Você fez da oficial para a teste ou entendi errado?
Preciso jogar o conteúdo do IE da teste para o oficial.Abraços!
-
Se é a mesma instância você pode usar a primeira query sem problemas, irá funcionar da forma desejada.
A ordem do FROM não interfere no caso pois o alias da tabela é utilizado e o campo que está sem Alias assume que a tabela destino é a que está após a cláusula UPDATE.
Abraço!
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
-
Macéulus
Fala para o seu DBA criar uma VIEW que conecta os dois banco de dados, fazendo os campos que você quer.
Com isso, basta você consultar a VIEW pelo nome dela e pronto.
Caso contrário, vai ter que criar um link entre os dois bancos e fazer um monte de configurações específicas de DBA como permissão de usuário e tudo mais.
Uma VIEW resolve fácil o seu problema.
Outra coisa é fazer como os outros falaram aqui no FORUM mesmo.
Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.
Mauricio Junior - Comunidade www.ecode10.com- Sugerido como Resposta Mauricio-Junior segunda-feira, 15 de agosto de 2016 15:23
- Marcado como Resposta Robson William Silva quinta-feira, 18 de agosto de 2016 12:40
-
Desculpe mas não concordo com tal resposta, visto que as tabelas mencionadas são do banco de dados do ERP Protheus e o mesmo não conseguirá trabalhar com a VIEW mencionada.
Enfim, apenas gostaria de deixar a observação aqui.
Obrigado!
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski