2008-09-16 9 views
28

Quiero portar datos de la base de datos de un servidor a la base de datos de otro servidor. Las bases de datos están ambas en un servidor mssql 2005 diferente. La replicación probablemente no sea una opción ya que la base de datos de destino se genera desde cero en un [intervalo de tiempo].servidor cruzado SQL

Preferebly Me gustaría hacer algo como

insert * 
from db1/table1 
into db2/table2 
where rule1 = true 

Es obvio que las credenciales de conexión irían en somehwere en este guión.

Respuesta

33

Creo que lo que quiere hacer es crear un servidor vinculado según el artículo this msdn. A continuación seleccione el uso de un 4 parte del nombre de objeto, por ejemplo:

Select * From ServerName.DbName.SchemaName.TableName 
+0

Un poco tarde, pero sólo ahora esta Revisited pregunta y sí, esto parece una respuesta a mi pregunta. Aunque ahora me doy cuenta de que mi pregunta debería haber sido la pregunta a la respuesta que seleccioné. Todo se pone un poco complicado ... –

0

¿Puede utilizar los servicios de transformación de datos para hacer el trabajo? Esto proporciona todo tipo de herramientas unidas para hacer este tipo de cosas.

Puede descargar el paquete de características de SQL Server 2005 desde el sitio web de Microsoft here

+0

Como usted probablemente sabe, es SSIS los 'nuevos' DTS de SQL Server 2005 + – Galwegian

1

son servicios de SQL Server Integration (SSI) es una opción? Si es así, usaría eso.

1

¿Estaría transferir todo el contenido de la base de datos de un servidor a otro, o sólo algunos datos de un par de mesas?

Para ambas opciones, SSIS haría el trabajo, especialmente si tiene previsto realizar la transferencia de forma periódica.

Si simplemente desea copiar algunos datos de 1 o 2 mesas y prefieren hacerlo utilizando TSQL en SQL Server Management Studio, puede utilizar el servidor vinculado como sugiere Pelser

  1. configurar el servidor de base de datos fuente como un servidor vinculado
  2. Utilice la siguiente sintaxis para acceder a los datos
select columnName1, columnName2, etc from serverName.databaseName.schemaName.tableName
1

Bueno, yo no estoy de acuerdo con su comentario sobre la replicación. Puede iniciar una replicación creando una base de datos desde cero, y puede controlar si las actualizaciones se realizarán actualizando la base de datos de clientes disponible o simplemente recreando la base de datos.

La replicación automatizada facilitará su trabajo mediante la administración automática de claves y relaciones.

Creo que lo más fácil es iniciar una replicación de instantáneas a través de MSSQL Server Studio, obtener los scripts correspondientes de T-SQL (es decir, las instrucciones T-SQL correspondientes para publicación y suscripciones) y grabar estos scripts como parte de un trabajo en la lista de trabajos del Agente de SQL o como un trabajo de replicación en la carpeta de replicaciones.

1

Puede ir a la ruta del servidor vinculado.

simplemente no puede usar la selección * en lo que tiene que hacer una inserción en seleccionar.

Evitaría la replicación si no tiene experiencia, ya que puede ser difícil de reparar si se rompe y puede ser propenso a otros problemas si no se gestiona correctamente.

Hazlo simple especialmente si las bases de datos son pequeñas.

6

Puede utilizar Abrir origen de datos De esta manera:

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 
+0

Genial, no sabía que esto existía. Por otro lado, http://technet.microsoft.com/en-us/library/ms179856.aspx dice que tiene que haber regedits explícitos para eso. –

-1
CREATE VIEW newR1 
AS 
SELECT * from OPENQUERY ([INSTANCE_NAME], 'select * from DbName.SchemaName.TableName') 
+0

Esto también requiere el servidor vinculado, por lo que básicamente se trata de otro tipo de consulta que sigue la misma sugerencia que hace algunos años. – Magier