O formato provavelmente deve ser:
<server>.<database>.<schema>.<table>
Por exemplo: DatabaseServer1.db1.dbo.table1
Update : Eu sei que esta é uma pergunta antiga e a resposta que tenho está correta; no entanto, acho que qualquer pessoa que tropeçar nisso deve saber algumas coisas.
Ou seja, ao consultar um servidor vinculado em uma situação de junção, a tabela INTEIRA do servidor vinculado provavelmente será baixada para o servidor a partir do qual a consulta está sendo executada para fazer a operação de junção. No caso do OP, tanto a table1
partir DB1
como a table1
partir DB2
serão transferidos 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 executar. Afinal, ele agora é limitado pelas velocidades de tráfego da rede, ordens de magnitude mais lentas do que as velocidades de memória ou mesmo 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 de que você precisa em uma tabela temporária. Em seguida, pergunte sobre isso.
Se isso não for possível, você precisa examinar as várias coisas que fariam com que o SQL server carregasse toda a tabela localmente. Por exemplo, usando GETDATE()
ou mesmo certas associações. Outros assassinos de desempenho incluem não conceder direitos apropriados.
Consulte http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ para mais informações.