2009-04-06 38 views
28

Supongamos que tengo una base de datos llamada testdb en prueba servidor. También tengo una base de datos llamada proddb en prod servidor. Ahora quiero seleccionar los datos de una tabla de testdb base de datos de proddb base de datos.¿Cómo seleccionar datos de una tabla desde otra base de datos en SQL Server?

¿Cómo puedo hacer eso en SQL Server?

Además, puedo hacerlo utilizando el enlace base de datos de Oracle en . ¿Pero cómo puede hacer eso en SQL Server?

Respuesta

5

Para realizar una consulta de servidor cruzado, consulte el procedimiento almacenado del sistema: sp_addlinkedserver en los archivos de ayuda.

Una vez que el servidor está vinculado, puede ejecutar una consulta en su contra.

+0

Las mesas están en diferentes servidores. – user82431

+0

Sí, mirándolo ahora mismo. Puede hacerlo vinculando los servidores ... –

+0

¿Cómo puedo enlazar entre servidores y cómo puedo seleccionar datos? por favor proporcione los pasos. gracias – user82431

44

Usted necesita sp_addlinkedserver()

http://msdn.microsoft.com/en-us/library/ms190479.aspx

Ejemplo:

exec sp_addlinkedserver @server = 'test' 

continuación

select * from [server].[database].[schema].[table] 

En su ejemplo:

select * from [test].[testdb].[dbo].[table] 
+2

Si necesita pasar por credenciales diferentes, use EXEC sp_addlinkedsrvlogin 'servername', 'false', NULL, 'SqlUser', 'password' –

+0

Estaba luchando para que esto funcione, encontré que también puede hacer esto usando SSMS (https://www.sqlshack.com/how-to-create-and-configure-a-linked-server-in-sql-server-management-studio/) que luego le muestra todas las diversas opciones de seguridad que están disponibles - Descubrí que tenía que configurarlo para utilizar el contexto de seguridad de inicio de sesión actual para que funcione. –

11

He usado esto antes de configurar una consulta en otro servidor y DB a través del servidor vinculado:

EXEC sp_addlinkedserver @server='PWA_ProjectServer', @srvproduct='', 
@provider='SQLOLEDB', @datasrc='SERVERNAME\PWA_ProjectServer' 

por el comentario anterior:

select * from [server].[database].[schema].[table] 

por ejemplo,

select top 6 * from [PWA_ProjectServer].[PWA_ProjectServer_Reporting].[dbo].[MSP_AdminStatus] 
5

En SQL Server 2012 y superior, no necesita crear un enlace. Puede ejecutar directamente

SELECT * FROM [TARGET_DATABASE].dbo.[TABLE] AS _TARGET 

No sé si las versiones anteriores de trabajo de SQL Server, así

Cuestiones relacionadas