El formato probablemente debería ser:
<server>.<database>.<schema>.<table>
Por ejemplo: DatabaseServer1.db1.dbo.table1
actualización: Sé que esto es una vieja pregunta y la respuesta que tener es correcto; Sin embargo, creo que cualquier persona que tropiece con esto debería saber algunas cosas.
Es decir, cuando se consulta en un servidor vinculado en una situación de unirse a la TODA tabla desde el servidor vinculado se probable ser descargados en el servidor se ejecuta la consulta con el fin de hacer la operación de unión. 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, supuestamente llamado DB3
.
Si tiene tablas grandes, este puede dar como resultado una operación que tarda mucho tiempo en ejecutarse. Después de todo, ahora está restringido por velocidades de tráfico de red que son órdenes de magnitud más lentas que la memoria o incluso velocidades de transferencia de disco.
Si es posible, realice una sola consulta en el servidor remoto, sin unirse a una tabla local, para extraer los datos que necesita en una tabla temporal. Luego consulta de eso.
No es posible, entonces necesita ver las diversas cosas que harían que el servidor SQL tenga que cargar toda la tabla localmente. Por ejemplo, usando GETDATE()
o incluso ciertas uniones. Otros asesinos de rendimiento incluyen no dar los derechos apropiados.
Consulte http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ para obtener más información.
si el databas nombre de servidor tiene un guión, necesita rodearlo con corchetes – bmw0128
@ bmw0128: Mejor aún, use comillas dobles: es compatible con casi todas las plataformas, a diferencia de los corchetes de Microsoft. –
También necesita usar los corchetes o comillas dobles cuando el nombre del servidor de la base de datos tiene un punto. –