Pouvons-nous utiliser join pour deux tables de base de données différentes?

98

Pouvons-nous utiliser l'opération de jointure pour deux tables de bases de données différentes? Si oui, comment dois-je procéder?

Les deux bases de données sont sur le même serveur et le SGBD est le même.

Vivek Kumar Ray
la source

Réponses:

187

SQL Server vous permet de joindre des tables de différentes bases de données tant que ces bases de données sont sur le même serveur. La syntaxe de jointure est la même; la seule différence est que vous devez spécifier complètement les noms de table.

Supposons que vous ayez deux bases de données sur le même serveur - Db1et Db2. Db1a une table appelée Clientsavec une colonne ClientIdet Db2a une table appelée Messagesavec une colonneClientId (laissons voir pourquoi ces tables sont dans des bases de données différentes).

Maintenant, pour effectuer une jointure sur les tables mentionnées ci-dessus, vous utiliserez cette requête:

select *
from Db1.dbo.Clients c
join Db2.dbo.Messages m on c.ClientId = m.ClientId
RePierre
la source
17
Il faut peut-être noter que les deux bases de données doivent être accessibles dans le même contexte de sécurité. En d'autres termes, si vous vous connectez avec des informations d'identification différentes pour les deux bases de données, ce qui précède ne fonctionnera pas. Dans ce cas, vous devrez probablement utiliser des "serveurs liés".
Ian Gold du
2

Vous pouvez utiliser la partie Synonymes dans la base de données.

entrez la description de l'image ici

Ensuite, dans l'assistant de visualisation de l'onglet Synonymes, recherchez vos synonymes enregistrés et ajoutez-les pour afficher et définir simplement la jointure interne. entrez la description de l'image ici

Ata Hoseini
la source