Podemos usar join para duas tabelas de banco de dados diferentes?

98

Podemos usar a operação de junção para duas tabelas de bancos de dados diferentes? Se sim, como faço isso?

Ambos os bancos de dados estão no mesmo servidor e o DBMS é o mesmo.

Vivek Kumar Ray
fonte

Respostas:

187

O SQL Server permite juntar tabelas de bancos de dados diferentes, desde que esses bancos de dados estejam no mesmo servidor. A sintaxe de junção é a mesma; a única diferença é que você deve especificar completamente os nomes das tabelas.

Vamos supor que você tenha dois bancos de dados no mesmo servidor - Db1e Db2. Db1tem uma tabela chamada Clientscom uma coluna ClientIde Db2tem uma tabela chamada Messagescom uma coluna ClientId(vamos deixar claro porque essas tabelas estão em bancos de dados diferentes).

Agora, para realizar uma junção nas tabelas mencionadas acima, você usará esta consulta:

select *
from Db1.dbo.Clients c
join Db2.dbo.Messages m on c.ClientId = m.ClientId
RePierre
fonte
17
Talvez deva ser observado que ambos os bancos de dados devem estar acessíveis no mesmo contexto de segurança. Em outras palavras, se você efetuar login com credenciais diferentes para os dois bancos de dados, o acima não funcionará. Nesse caso, você provavelmente terá que usar "Servidores vinculados".
Ian Goldby
2

Você pode usar a parte de sinônimos no banco de dados.

insira a descrição da imagem aqui

Em seguida, no assistente de visualização da guia Sinônimos, encontre seus sinônimos salvos e adicione-os para visualizar e definir a junção interna de forma simples. insira a descrição da imagem aqui

Ata Hoseini
fonte