Usuário com melhor resposta
[Servidor] Como faço para atualizar meu servidor de dev a partir do servidor de produção?

Pergunta
-
Olá,
Tenho dois servidores de banco aqui. Um de dev e outro de prod.
Quero então rodar uma SP em produção e, após isto pegar o resultado da SP e jogar direto em uma tabela na base de dev.
Como posso fazer isto?
É possível?
Obrigado Feras do SQL
K2rto'4 - Analista Sharepoint
"Hoje melhor do que ontem, amanhã melhor do que hoje!" 改 善
- Editado TI DEV quinta-feira, 30 de outubro de 2014 18:58
Respostas
-
K2rto'4,
Crie um "linkedserver" no servidor de Produção para inserir os dados na tabela em seu ambiente de desenvolvimento.
Para criar um linkedserver, utilize o script T-SQL abaixo:
EXEC sp_addlinkedserver @server=N'TESTE', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'SeuServidor\SuaInstancia'; GO sp_addlinkedsrvlogin @rmtsrvname ='TESTE' , @useself = 'FALSE' , @locallogin = null , @rmtuser ='SeuUsuario' , @rmtpassword = 'SuaSenha' GO
É necessário habilitar o RPC para manipular os dados entre os servidores.
Abra o SSMS, selecione "Server Objects" => "Linked Servers" e selecione o LinkedServer que você criou. Clique com o botão direito em "Properties". Na janela, selecione a aba "Server Options" e habilite as opções de RPC. Veja na imagem abaixo:
Então se a tabela for idêntica entre os ambientes, basta executar a instrução INSERT como indicado no exemplo abaixo:
USE SeuBanco GO --EXEMPLO EXECUTANDO O SCRIPT NO SERVIDOR DE PRODUÇÃO INSERT INTO [TESTE].SeuBanco.dbo.TB_PESSOA (CD_PESSOA, NM_PESSOA) SELECT CD_PESSOA, NM_PESSOA FROM TB_PESSOA; GO
Isto você pode executar através de um Job em horários específicos para não impactar os seus usuários de Produção.
Para maiores informações veja:
http://msdn.microsoft.com/en-us/library/ff772782.aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 31 de outubro de 2014 12:57
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 31 de outubro de 2014 16:41
Todas as Respostas
-
-
Vamos lá:
Sua máquina de produção "enxerga" a instância de DEV? Se sim, é possível. Vamos lá:
INSERT INTO baseDEV.dbo.TabelaA EXEC ('sp_SUA_SP')
Lembrando que a TabelaA deve ter a mesma estrutura do resultSet da sua SP.
Se não, não acredito que seja possível fazer a carga diretamente. Uma opção neste caso é:
Criar a TabelaA em produção (Lembrando que a TabelaA deve ter a mesma estrutura do resultSet da sua SP)
INSERT INTO TabelaA EXEC ('sp_SUA_SP')
Depois, exportar os dados da sua TabelaA usando XML, CSV ou qualquer outra forma suportada pelo SQL Server e então importar em DEV.
Se nada disso for possível, só vejo a opção de backup, restore.
Marque como resposta se foi útil.
- Editado Deric Ferreira quinta-feira, 30 de outubro de 2014 20:04
-
K2rto'4,
Crie um "linkedserver" no servidor de Produção para inserir os dados na tabela em seu ambiente de desenvolvimento.
Para criar um linkedserver, utilize o script T-SQL abaixo:
EXEC sp_addlinkedserver @server=N'TESTE', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'SeuServidor\SuaInstancia'; GO sp_addlinkedsrvlogin @rmtsrvname ='TESTE' , @useself = 'FALSE' , @locallogin = null , @rmtuser ='SeuUsuario' , @rmtpassword = 'SuaSenha' GO
É necessário habilitar o RPC para manipular os dados entre os servidores.
Abra o SSMS, selecione "Server Objects" => "Linked Servers" e selecione o LinkedServer que você criou. Clique com o botão direito em "Properties". Na janela, selecione a aba "Server Options" e habilite as opções de RPC. Veja na imagem abaixo:
Então se a tabela for idêntica entre os ambientes, basta executar a instrução INSERT como indicado no exemplo abaixo:
USE SeuBanco GO --EXEMPLO EXECUTANDO O SCRIPT NO SERVIDOR DE PRODUÇÃO INSERT INTO [TESTE].SeuBanco.dbo.TB_PESSOA (CD_PESSOA, NM_PESSOA) SELECT CD_PESSOA, NM_PESSOA FROM TB_PESSOA; GO
Isto você pode executar através de um Job em horários específicos para não impactar os seus usuários de Produção.
Para maiores informações veja:
http://msdn.microsoft.com/en-us/library/ff772782.aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 31 de outubro de 2014 12:57
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 31 de outubro de 2014 16:41
-
Só para constar, CUIDADO com isso de atualizar DEV e/ou PRODUÇÃO por LinkedServer.
O LinkedServer é uma via de mão dupla, ou seja, se você faz um insert de PROD para DEV, pode-se fazer também de DEV para PROD.
Preste muita, mas muita atenção com estes usuários e nas transações.
Eu em particular não faço deste modo, pois já vi ambientes de produção pararem por erros com linkedserver de desenvolvimento.
Prefiro o bom backup/restore quando necessário (como citado pelo Bruno Destro) ou outra solução pelo SSIS para ter um controle a nivel transacional no meu ambiente de DEV.
-
Olá,
A intenção na verdade é a de testar uma solução em dev, mas com os dados de produção.
Preciso pegar os dados de produção e jogar em uma tabela em dev.
Após isto uma SP roda sobre a tabela alimentada com os dados de produção.
Vou testar alguns procedimentos sugeridos aqui.
Obs.: Não consigo fazer um backup diretamente. Caso precise de uma backup precisarei falar com o DBA.
Obrigado
K2rto'4 - Analista de Sistemas II
"Hoje melhor do que ontem, amanhã melhor do que hoje!" 改 善
- Editado TI DEV sexta-feira, 31 de outubro de 2014 17:44
-
Falem aí,
Consigo fazer uma consulta no outro servidor, a partir de um servidor.
Seguem:
Servidor :ServerA
Banco : BancoA
Grantor :dbo
Tabela :TabelaA
Servidor :ServerB
Banco : BancoB
Grantor :dbo
Tabela :TabelaBA partir do servidor B, faço:
select * from [ServerA].[BancoA].[dbo].[TabelaA]
Ainda não tentei um insert, mas acho que deve rolar. Só devo me atentar para a permissão.
Abraços
K2rto'4 - Analista de Sistemas
"Hoje melhor do que ontem, amanhã melhor do que hoje!" 改 善
- Editado TI DEV quarta-feira, 5 de novembro de 2014 13:57