Consulta de Ejemplo de Servidor Vinculado SQL Server
Mientras estoy en Management Studio, estoy tratando de ejecutar una consulta/hacer una unión entre dos servidores vinculados. ¿Es esta una sintaxis correcta usando servidores de base de datos enlazados:
select foo.id
from databaseserver1.db1.table1 foo,
databaseserver2.db1.table1 bar
where foo.name=bar.name
Básicamente, se acaba de introducir el nombre del servidor de la base de datos en la base de datos.¿mesa ?
11 answers
El formato probablemente debería ser:
<server>.<database>.<schema>.<table>
Por ejemplo: Servidor de datos1.db1.dbo.cuadro 1
Actualización: Sé que esta es una pregunta antigua y la respuesta que tengo es correcta; sin embargo, creo que cualquier otra persona que tropiece con esto debería saber algunas cosas.
Es decir, cuando se realiza una consulta contra un servidor vinculado en una situación de unión, la tabla COMPLETA del servidor vinculado probablemente se descargará al servidor desde el que se ejecuta la consulta en orden para hacer la operación join. En el caso del OP, tanto table1
de DB1
como table1
de DB2
se transferirán en su totalidad al servidor que ejecuta la consulta, presumiblemente llamado DB3
.
Si tiene tablas grandes, esto puede resultar en una operación que tarda mucho tiempo en ejecutarse. Después de todo, ahora está limitado por las velocidades de tráfico de red, que son órdenes de magnitud más lentas que las velocidades de transferencia de memoria o incluso de disco.
Si es posible, realice una sola consulta contra servidor remoto, sin unirse a una tabla local, para extraer los datos que necesita en una tabla temporal. Entonces consulta eso.
Si eso no es posible, entonces necesita mirar las diversas cosas que causarían que SQL server tuviera que cargar toda la tabla localmente. Por ejemplo usando GETDATE()
o incluso ciertas uniones. Otros asesinos de rendimiento incluyen no dar los derechos apropiados.
Véase http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries / para más información.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-04 02:20:40
SELECT * FROM OPENQUERY([SERVER_NAME], 'SELECT * FROM DATABASE_NAME..TABLENAME')
Esto puede ayudarte.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-16 12:18:36
Si todavía encuentra problemas con <server>.<database>.<schema>.<table>
Incluya el nombre del servidor en []
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-13 12:28:20
Debe especificar el esquema/owner (dbo por defecto) como parte de la referencia. Además, sería preferible usar el nuevo estilo de unión (ANSI-92).
select foo.id
from databaseserver1.db1.dbo.table1 foo
inner join databaseserver2.db1.dbo.table1 bar
on foo.name = bar.name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-03 22:03:24
Para aquellos que tienen problemas con estas otras respuestas , try OPENQUERY
Ejemplo:
SELECT * FROM OPENQUERY([LinkedServer], 'select * from [DBName].[schema].[tablename]')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-07 18:45:35
select * from [Server].[database].[schema].[tablename]
Esta es la forma correcta de llamar. Asegúrese de verificar que los servidores están vinculados antes de ejecutar la consulta!
Para comprobar si hay servidores vinculados llame a:
EXEC sys.sp_linkedservers
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-08 19:55:51
Por lo general, las consultas directas no se deben usar en el caso del servidor vinculado porque utiliza en gran medida la base de datos temp de SQL server. En el primer paso, los datos se recuperan en temp DB y luego se produce el filtrado. Hay muchos hilos sobre esto. Es mejor usar open OPENQUERY porque pasa SQL al servidor vinculado de origen y luego devuelve resultados filtrados, por ejemplo,
SELECT *
FROM OPENQUERY(Linked_Server_Name , 'select * from TableName where ID = 500')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-02 15:29:38
select name from drsql01.test.dbo.employee
- drslq01 is servernmae {linked serer
- la prueba es el nombre de la base de datos
- dbo es esquema-esquema predeterminado
- el empleado es el nombre de la tabla
Espero que ayude a entender, cómo ejecutar la consulta para el servidor vinculado
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-15 03:22:09
La siguiente consulta es trabajar mejor.
Prueba esta consulta:
SELECT * FROM OPENQUERY([LINKED_SERVER_NAME], 'SELECT * FROM [DATABASE_NAME].[SCHEMA].[TABLE_NAME]')
Es muy útil vincular MySQL a MS SQL
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-25 05:43:06
Por si sirve de algo, encontré la siguiente sintaxis para funcionar mejor:
SELECCIONE * DESDE [LINKED_SERVER]...[CUADRO]
No pude conseguir que las recomendaciones de otros funcionaran, usando el nombre de la base de datos. Además, esta fuente de datos no tiene esquema.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-24 14:41:04
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-25 05:14:50