O formato provavelmente deve ser:
<server>.<database>.<schema>.<table>
Por exemplo:DatabaseServer1.db1.dbo.table1
Atualizar :Eu sei que esta é uma pergunta antiga e a resposta que tenho está correta; no entanto, acho que qualquer outra pessoa que se depare com isso deve saber algumas coisas.
Ou seja, ao consultar um servidor vinculado em uma situação de junção, o INTEIRO tabela do servidor vinculado provavelmente ser baixado para o servidor do qual a consulta está sendo executada para fazer a operação de junção. No caso do OP, tanto
table1
de DB1
e table1
do DB2
será transferido em sua totalidade para o servidor que executa a consulta, presumivelmente denominado DB3
. Se você tiver tabelas grandes, isso pode resultar em uma operação que leva muito tempo para ser executada. Afinal, agora ele é limitado por velocidades de tráfego de rede que são ordens de magnitude mais lentas que a memória ou até mesmo as velocidades de transferência de disco.
Se possível, execute uma única consulta no servidor remoto, sem ingressar em uma tabela local, para extrair os dados necessários para uma tabela temporária. Então pergunte fora disso.
Se isso não for possível, você precisará examinar as várias coisas que fariam com que o SQL Server tivesse que carregar a tabela inteira localmente. Por exemplo, usando
GETDATE()
ou mesmo certas junções. Outros assassinos de desempenho incluem não dar direitos apropriados. Veja http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ para mais informações.