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.
Isso pode te ajudar.
fonte
Se você ainda encontrar problemas com
<server>.<database>.<schema>.<table>
Coloque o nome do servidor em
[]
fonte
dbo.databaseserver1.db1.dbo.table1
Para aqueles que estão tendo problemas com essas outras respostas , tente
OPENQUERY
Exemplo:
fonte
Você precisa especificar o esquema / proprietário (dbo por padrão) como parte da referência. Além disso, seria preferível usar o estilo de junção mais recente (ANSI-92).
fonte
Esta é a forma correta de ligar. Certifique-se de verificar se os servidores estão vinculados antes de executar a consulta!
Para verificar se há servidores vinculados, chame:
fonte
Espero que ajude a entender como executar consulta para servidor vinculado
fonte
Normalmente, as consultas diretas não devem ser usadas no caso de servidor vinculado porque ele usa muito o banco de dados temporário do servidor SQL. Na primeira etapa, os dados são recuperados no banco de dados temporário, em seguida, ocorre a filtragem. Existem muitos tópicos sobre isso. É melhor usar o OPENQUERY aberto porque ele passa o SQL para o servidor vinculado de origem e retorna os resultados filtrados, por exemplo
fonte
Pelo que vale a pena, descobri que a seguinte sintaxe funciona melhor:
SELECIONE * DE [LINKED_SERVER] ... [TABELA]
Não consegui fazer com que as recomendações de outras pessoas funcionassem, usando o nome do banco de dados. Além disso, esta fonte de dados não possui esquema.
fonte
clique com o botão direito em uma tabela e clique na tabela de script como selecionar
fonte
Seguir a Consulta é o melhor trabalho.
fonte
PostgreSQL :
Você deve omitir o DBName da consulta :
SELECT * FROM OPENQUERY([LinkedServer], 'select * from schema."tablename"')
fonte