SQL entre servidores
-
09-06-2019 - |
Pergunta
Quero portar dados do banco de dados de um servidor para o banco de dados de outro servidor.Os bancos de dados estão em um servidor mssql 2005 diferente.A replicação provavelmente não é uma opção, pois o banco de dados de destino é gerado do zero com base em [intervalo de tempo].
De preferência eu faria algo como
insert *
from db1/table1
into db2/table2
where rule1 = true
É óbvio que as credenciais de conexão apareceriam em algum lugar deste script.
Solução
Acho que o que você quer fazer é criar um servidor vinculado conforme esse artigo msdn.Você selecionaria então usando um nome de objeto de 4 partes, por exemplo:
Select * From ServerName.DbName.SchemaName.TableName
Outras dicas
Você pode usar fonte de dados aberta assim:
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
SELECT *
FROM OPENDATASOURCE('SQLOLEDB',
'Data Source=<Ip Of Your Server>;
User ID=<SQL User Name>;Password=<SQL password>').<DataBase name>.<SchemaName>.<Table Or View Name>
Go
O SQL Server Integration Services (SSIS) é uma opção?Se sim, eu usaria isso.
Você transferiria todo o conteúdo do banco de dados de um servidor para outro ou apenas alguns dados de algumas tabelas?
Para ambas as opções, o SSIS faria o trabalho, especialmente se você planeja fazer a transferência regularmente.
Se você simplesmente deseja copiar alguns dados de 1 ou 2 tabelas e prefere fazê-lo usando TSQL no SQL Management Studio, você pode usar o servidor vinculado conforme sugerido por Pelser
- Configure o servidor de banco de dados de origem como um servidor vinculado
- Use a seguinte sintaxe para acessar dados
select columnName1, columnName2, etc from serverName.databaseName.schemaName.tableName
Bem, não concordo com seu comentário sobre replicação.Você pode iniciar uma replicação criando um banco de dados do zero e pode controlar se as atualizações serão feitas atualizando o banco de dados do cliente disponível ou simplesmente recriando o banco de dados.
A replicação automatizada facilitará seu trabalho gerenciando automaticamente chaves e relações.
Acho que a coisa mais fácil a fazer é iniciar uma replicação de instantâneo através do MSSQL Server Studio, obter os scripts T-SQL correspondentes (ou seja, as instruções T-SQL correspondentes para publicação e assinaturas) e registrar esses scripts como parte de um trabalho em a lista Jobs do SQL Agent ou como um trabalho de replicação na pasta de replicações.
Você poderia seguir a rota do servidor vinculado.
você simplesmente não pode usar o select * into, você precisa fazer uma inserção no select.
Eu evitaria a replicação se você não tivesse experiência com isso, pois pode ser difícil consertar se quebrar e pode estar sujeito a outros problemas se não for gerenciado adequadamente.
Mantenha a simplicidade, especialmente se os bancos de dados forem pequenos.
Você pode usar os Serviços de Transformação de Dados para fazer o trabalho?Isso fornece todos os tipos de ferramentas integradas para fazer esse tipo de coisa.
Você pode baixar o feature pack do SQL Server 2005 no site da Microsoftaqui
CREATE VIEW newR1
AS
SELECT * from OPENQUERY ([INSTANCE_NAME], 'select * from DbName.SchemaName.TableName')