Können wir Join für zwei verschiedene Datenbanktabellen verwenden?

97

Können wir die Verknüpfungsoperation für zwei Tabellen aus verschiedenen Datenbanken verwenden? Wenn ja, wie mache ich das?

Beide Datenbanken befinden sich auf demselben Server und DBMS ist dasselbe.

Vivek Kumar Ray
quelle

Antworten:

186

Mit SQL Server können Sie Tabellen aus verschiedenen Datenbanken verknüpfen, solange sich diese Datenbanken auf demselben Server befinden. Die Join-Syntax ist dieselbe. Der einzige Unterschied besteht darin, dass Sie Tabellennamen vollständig angeben müssen.

Angenommen, Sie haben zwei Datenbanken auf demselben Server - Db1und Db2. Db1hat eine Tabelle Clientsmit einer Spalte ClientIdund Db2eine Tabelle Messagesmit einer Spalte ClientId(lassen wir uns überlegen, warum sich diese Tabellen in verschiedenen Datenbanken befinden).

Um nun einen Join für die oben genannten Tabellen durchzuführen, verwenden Sie diese Abfrage:

select *
from Db1.dbo.Clients c
join Db2.dbo.Messages m on c.ClientId = m.ClientId
RePierre
quelle
16
Es sollte vielleicht beachtet werden, dass auf beide Datenbanken im selben Sicherheitskontext zugegriffen werden muss. Mit anderen Worten, wenn Sie sich mit unterschiedlichen Anmeldeinformationen für die beiden Datenbanken anmelden, funktioniert das oben Gesagte nicht. In diesem Fall müssten Sie wahrscheinlich "Verbindungsserver" verwenden.
Ian Goldby
1

Sie können den Synonymteil in der Datenbank verwenden.

Geben Sie hier die Bildbeschreibung ein

Suchen Sie dann im Ansichtsassistenten auf der Registerkarte "Synonyme" Ihre gespeicherten Synonyme und fügen Sie sie hinzu, um die innere Verknüpfung anzuzeigen und festzulegen. Geben Sie hier die Bildbeschreibung ein

Ata Hoseini
quelle