2010-07-19 55 views
7

Si quiero ejecutar este tipo de consulta en SQL Server, ¿cómo puedo hacer la misma consulta desde un servidor al que estoy conectado a otro?¿Insertar datos de un servidor a otro?

Intenté agregar "[ServerName1]." antes de "[DatabaseName1]. [dbo] ..." y "[ServerName2]". antes de "[DatabaseName2]. [dbo] ..." pero eso no parecía funcionar.

INSERT INTO [DatabaseName1].[dbo].[TableName] 
      ([FieldName]) 
    SELECT [FieldName] FROM [DatabaseName2].[dbo].[TableName] 

¿Esto es posible?

Respuesta

9

Sí lo haría con el nombre-servidor antes de que todo el resto del nombre-objeto como:

myserver.mydatabase.dbo.mytable 

Sin embargo, primero tiene que configurar los servidores vinculados. Busque servidores vinculados en BOL.

+0

¿Qué es un "BOL"? –

+1

Libros en línea: los archivos de ayuda de SQL Server. – HLGEM

8

Si tiene habilitado adhoc distributed queries, puede usar OPENDATASOURCE. La configuración de un servidor vinculado es otra opción. No estoy seguro de los pros y los contras de cada enfoque.

INSERT INTO [DatabaseName1].[dbo].[TableName] 
SELECT FieldName 
FROM OPENDATASOURCE('SQLNCLI', 
    'Data Source=Server\InstanceName;Integrated Security=SSPI') 
    .DatabaseName2.dbo.TableName 
+0

Para su información, esta función debe estar habilitada: http://stackoverflow.com/questions/14544221/how-to-enable-ad-hoc-distributed-queries – VoteCoffee

2

La mejor manera de hacer esto sería crear un "servidor vinculado" entre los dos. Necesitará los permisos apropiados para hacer esto.

Luego, solo es cuestión de acceder a las bases de datos utilizando su nombre de servidor de enlaces.

Ex: [LinkedServer] .databasename.dbo.tablename

Para crear un LinkedServer, vaya al servidor de objetos-> clic derecho sobre Servidores- ligado> Haga clic en 'nuevo servidor vinculado'.

Cuestiones relacionadas