Czy możemy użyć złączenia dla dwóch różnych tabel bazy danych?

103

Czy możemy użyć operacji łączenia dla dwóch tabel z różnych baz danych? Jeśli tak, jak mam to zrobić?

Obie bazy danych znajdują się na tym samym serwerze, a DBMS jest taki sam.

Vivek Kumar Ray
źródło

Odpowiedzi:

191

SQL Server umożliwia łączenie tabel z różnych baz danych, o ile te bazy danych znajdują się na tym samym serwerze. Składnia złączeń jest taka sama; jedyną różnicą jest to, że musisz w pełni określić nazwy tabel.

Załóżmy, że masz dwie bazy danych na tym samym serwerze - Db1i Db2. Db1ma tabelę o nazwie Clientsz kolumną ClientIdi Db2tabelę o nazwie Messagesz kolumną ClientId(zastanówmy się, dlaczego te tabele znajdują się w różnych bazach danych).

Teraz, aby wykonać sprzężenie na wyżej wymienionych tabelach, będziesz używać tego zapytania:

select *
from Db1.dbo.Clients c
join Db2.dbo.Messages m on c.ClientId = m.ClientId
RePierre
źródło
20
Należy być może zauważyć, że obie bazy danych muszą być dostępne w tym samym kontekście bezpieczeństwa. Innymi słowy, jeśli zalogujesz się z różnymi poświadczeniami dla dwóch baz danych, powyższe nie zadziała. W takim przypadku prawdopodobnie będziesz musiał użyć „Serwerów połączonych”.
Ian Goldby,
2

Możesz użyć części synonimów w bazie danych.

wprowadź opis obrazu tutaj

Następnie w kreatorze widoku z zakładki Synonimy znajdź zapisane synonimy i dodaj je do widoku i po prostu ustaw sprzężenie wewnętrzne. wprowadź opis obrazu tutaj

Ata Hoseini
źródło