Pesquisa de exemplo do servidor ligado ao SQL

Enquanto estou no Estúdio de gestão, estou a tentar executar uma consulta / fazer uma ligação entre dois servidores ligados. É esta uma sintaxe correcta usando servidores db ligados:

select foo.id 
from databaseserver1.db1.table1 foo, 
     databaseserver2.db1.table1 bar 
where foo.name=bar.name

basicamente, prefacias o nome do servidor db para o db.mesa ?

Author: marc_s, 2010-11-04

11 answers

O formato deve ser provavelmente:

<server>.<database>.<schema>.<table>

Por exemplo: Databaserver1.db1.dbo.quadro 1


Update : Eu sei que esta é uma pergunta antiga e a resposta que eu tenho é correta; no entanto, eu acho que qualquer outro tropeçando sobre isso deve saber algumas coisas.

Ou seja, quando se questiona um servidor ligado numa situação de junção, a tabela inteira do servidor ligado irá provavelmente ser transferida para o servidor a pesquisa está a ser executada a partir de in ordem para fazer a operação de adesão. No caso do OP, ambos table1 de DB1 e table1 de DB2 serão transferidos na sua totalidade para o servidor que executa a consulta, presumivelmente chamado DB3.

Se tiver tabelas grandes, isto Pode {[15] } resultar numa operação que leva muito tempo a ser executada. Afinal de contas, ele é agora restringido por velocidades de tráfego de rede que são ordens de magnitude mais lento do que a memória ou mesmo Velocidade de transferência de disco.

Se possível, efectuar uma única consulta contra o servidor remoto, sem se juntar a uma tabela local, para puxar os dados que você precisa para uma tabela temporária. Então questiona isso.

Isso não é possível então você precisa olhar para as várias coisas que fariam o servidor SQL ter que carregar toda a tabela localmente. Por exemplo, usando GETDATE() ou mesmo certas ligações. Outros assassinos de desempenho incluem não dar direitos adequados.

Ver http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ para mais informações.

 144
Author: NotMe, 2015-03-04 02:20:40
SELECT * FROM OPENQUERY([SERVER_NAME], 'SELECT * FROM DATABASE_NAME..TABLENAME')
Isto pode ajudar-te.
 14
Author: Akhilesh Kamate, 2016-03-16 12:18:36

Se ainda tiver problemas com <server>.<database>.<schema>.<table>

Anexar o nome do servidor em []

 9
Author: Mian, 2018-07-13 12:28:20

Tem de indicar o esquema/proprietário (dbo por omissão) como parte da referência. Além disso, seria preferível usar o estilo de junção mais recente (ANSI-92).

select foo.id 
    from databaseserver1.db1.dbo.table1 foo
        inner join databaseserver2.db1.dbo.table1 bar 
            on foo.name = bar.name
 8
Author: Joe Stefanelli, 2010-11-03 22:03:24

Para aqueles que têm problemas com essas outras respostas , tente OPENQUERY

Exemplo:

 SELECT * FROM OPENQUERY([LinkedServer], 'select * from [DBName].[schema].[tablename]') 
 5
Author: Tom Stickel, 2017-02-07 18:45:35
select * from [Server].[database].[schema].[tablename] 
Esta é a maneira correcta de ligar. Certifique-se de verificar se os servidores estão ligados antes de executar a consulta!

Para verificar se há servidores ligados, ligue para:

EXEC sys.sp_linkedservers 
 3
Author: Abhishek Jaiswal, 2016-03-08 19:55:51

Normalmente, as consultas directas não devem ser usadas no caso de servidor ligado porque usa fortemente a base de dados temp do servidor SQL. Na primeira etapa os dados são recuperados em DB de temperatura, em seguida, a filtragem ocorrer. Há muitos fios sobre isso. É melhor usar o OPENQUERY aberto porque passa o SQL para o servidor ligado à fonte e depois devolve os resultados filtrados, por exemplo

SELECT *
FROM OPENQUERY(Linked_Server_Name , 'select * from TableName where ID = 500')
 2
Author: Muhammad Yaseen, 2016-03-02 15:29:38
select name from drsql01.test.dbo.employee
  • drslq01 is servernmae -- linked serer
  • o teste é o nome da base de dados
  • dbo is schema-default schema
  • o empregado é o nome do quadro

Espero que ajude a compreender, como executar a consulta para o servidor ligado

 2
Author: Jaspreet Singh, 2018-01-15 03:22:09

Seguir a consulta é o melhor trabalho.

Tente esta consulta:

SELECT * FROM OPENQUERY([LINKED_SERVER_NAME], 'SELECT * FROM [DATABASE_NAME].[SCHEMA].[TABLE_NAME]')

Ajuda muito ligar o MySQL ao MS SQL

 1
Author: Vijay S, 2018-06-25 05:43:06

Para que conste, encontrei a seguinte sintaxe para trabalhar o melhor:

SELECCIONE * DE [LINKED_SERVER]...[Quadro]

Não consegui que as recomendações dos outros funcionassem, usando o nome da base de dados. Além disso, esta fonte de dados não tem nenhum esquema.
 0
Author: Sean Warren, 2017-10-24 14:41:04

Carregue com o botão direito numa tabela e carregue na tabela script como seleccionar

enter image description here

 -1
Author: Shimon Doodkin, 2018-06-25 05:14:50