Aula 12
Temos que copiar 2 tabelas de um servidor origem para outro servidor destino, todos os dias.
Obs.
Por que não podemos utilizar o import/export do sql ?
/*
1.) Vamos deletar as tabelas do banco destino se existirem
2.) Vamos criar o link server se não existir
3.) Vamos criar as duas tabelas no destino atravez de select na origem
4.) Apagamos o link server
*/
USE [<< BANCO DESTINO >>]
GO
/****** Object: Table [dbo].[<< TABELA 1 DESTINO >>] ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[<< TABELA 1 DESTINO >>]') AND type in (N'U'))
DROP TABLE [dbo].[<< TABELA 1 DESTINO >>]
GO
USE [<< BANCO DESTINO >>]
GO
/****** Object: Table [dbo].[<< TABELA 2 DESTINO >>] ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[<< TABELA 2 DESTINO >>]') AND type in (N'U'))
DROP TABLE [dbo].[<< TABELA 2 DESTINO >>]
GO
USE master;
GO
IF NOT EXISTS (SELECT srv.name FROM sys.servers srv WHERE srv.server_id != 0 AND srv.name = N'<< SERVIDOR ORIGEM >>')EXEC sp_addlinkedserver N'<< SERVIDOR ORIGEM >>', N'SQL Server';
GO
USE << BANCO DESTINO >>
SELECT * INTO << TABELA 1 DESTINO >> FROM << SERVIDOR ORIGEM >>.<< BANCO ORIGEM >>.dbo.<< TABELA 1 ORIGEM >>
SELECT * INTO << TABELA 2 DESTINO >> FROM << SERVIDOR ORIGEM >>.<< BANCO ORIGEM >>.dbo.<< TABELA 2 ORIGEM >>
/****** Object: LinkedServer [<< SERVIDOR ORIGEM >>] ******/
IF EXISTS (SELECT srv.name FROM sys.servers srv WHERE srv.server_id != 0 AND srv.name = N'<< SERVIDOR ORIGEM >>')EXEC master.dbo.sp_dropserver @server=N'<< SERVIDOR ORIGEM >>', @droplogins='droplogins'
GO
/*
Problema que podemos ter utilizando esta tecnica.
[SQLSTATE 28000] (Error 18456). The step failed.
Resolvendo :
Todos os programas -> SQL Server 2008 -> Ferramentas de configuração -> Gerenciador de configuração do SQL Server.
Vá para o agente do servidor SQL -> propriedades -> Verifique a guia de logon.
O logon devera ser um logon de rede nivel sql admin para facilitar, mas a cada um deve definir suas regrsas de segurança.
*/