Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcio Santana

exportando apenas dados e não tabelas

Recommended Posts

pessoal bom dia!

 

não sou expert em sql server 2000 como vcs irao ver apos minha duvida.

 

 

tem dois bancos de dados no meu sql server 2000

 

bancoa e bancob

 

o bancob é uma copia do bancoa, porem no bancob foram incluidos alguns campos que no bancoa não tem.

o bancoa é atualizado todos os dias e o bancob não.

 

queria saber se existe alguma forma de copiar apenas os dados do bancoa para o bancob sem mecher na estrutura do bancob.

 

obs: não posso fazer o restore pois o bancob tem uns campos que o bancoa não tem.

 

a ferramenta "export data" seria a melhor solução para esse caso?

o "export data" sobrepoe os dados na tabela de destino ou faz uma copia diferencial?

 

att

marcio santana

analista de sistemas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Marcio.

 

no seu caso eu criaria uma stored procedure no bancoB que atualizase as informacoes necessarias.

 

Exemplo:

 

BancoA.Funcionarios (ID,Nome,Salario)

BancoB.Funcionarios (ID,Nome,Salario,Endereco,filiacao)

 

 

para atualizar as informacoes no bancoB.Funcionarios o SQL ficaria assim.

 

-- Atualiza dados dos funcionarios ja cadastrados

update BFunc
set	   BFunc.Nome = AFunc.Nome
,	  BFunc.Salario = AFunc.Salario
From   BancoB.Funcionarios BFunc
Join   BancoA.Funcionarios AFunc on AFunc.ID = BFunc.ID;

-- inclui os novos funcionarios.

Insert Into Funcionarios (ID,Nome,Salario,Endereco,Filiacao)
Select AFunc.ID, AFunc.Nome, AFunc.Salario, Null, Null
From   BancoA.Funcionarios AFunc
Where  Not Exists (Select 1 From Funcionarios BFunc where BFunc.ID = AFunc.ID);
Repita o procedimento para todas as tabelas que você quer atualizar.

 

(*) se o banco de dados B nao estiver no mesmo servidor, você deve criar um linkserver.

a sintaxe "From" mudaria para:

select * from ServidorA.BancoA.Funcionario;

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio

 

Há mais de uma maneira de realizar a atualização dos dados. Isso vai depender muito, por exemplo, da frequencia que esses dados deverão ser atualizados no servidor B.

 

Se for uma carga mensal, o DTS pode ser uma boa opção para uma massa de dados maior. Se for uma atualização diária, você poderá utilizar a opção dada pelo Karepa no post anterior. Ambas as formas, acredito que seja possível criar um JOB para executar o procedimento de atualização em horários programados.

 

O ideal é que o servidor B recebesse somente os dados realmente atualizados, assim você evitaria consumo de I/O desnecessário e o tempo de atualização seria menor. Uma forma, seria o uso de TRIGGER, porém, só recomendo usar se realmente for necessário. Mas acredito que no seu caso seja uma boa opção. Pois, você poderia criar um TRIGGER que faria a atualização somente dos dados que realmente foram alterados no servidor A, inclusive definindo as colunas que deseja atualizar.

 

[]'s

 

Fernando Silveira

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.