Share via

Query with multiple databases

Jonathan Brotto 1,076 Reputation points
2021-12-28T16:09:22.19+00:00

I was just wondering could I write a query that fetches data from two different databases?

Developer technologies | Transact-SQL
Developer technologies | Transact-SQL

A Microsoft extension to the ANSI SQL language that includes procedural programming, local variables, and various support functions.

SQL Server | Other
SQL Server | Other

Additional SQL Server features and topics not covered by specific categories

0 comments No comments

Answer accepted by question author

LiHong-MSFT 10,061 Reputation points
2021-12-29T02:14:01.167+00:00

Hi,@Jonathan Brotto
The key point is that whether the two databases are on the same server.
1.Two databases on the same server
If you have access to both databases, and your table keys match, you can join across databases by specifying the fully qualified name :[Database].[Schema].[Table]
for example,

SELECT T1.ID, T1.name,T2.ID,T2.name  
FROM DatabaseA.dbo.Table1 T1  
JOIN DatabaseB.dbo.Table2 T2   
on T2.ID = T1.ID  

2.Two databases on different servers :

exec sp_addlinkedserver 'alias','','sqloledb','ip address'  
exec sp_addlinkedsvlogin 'alias','false',null,'uesername','password'  
go  
SELECT ...  
FROM alias.DatabaseA.dbo.Table1 T1  
JOIN alias.DatabaseB.dbo.Table2 T2   
on ...  

Note:Two servers can access the database only if they are allowed to communicate

Best regards,
LiHong


If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".

Note: Please follow the steps in our Documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

Was this answer helpful?


1 additional answer

Sort by: Most helpful
  1. Tom Cooper 8,501 Reputation points
    2021-12-28T16:16:36.063+00:00

    Yes, for example the following query gets all databases in the master database and all the tables in the msdb database

    Select 'master', name From master.sys.databases
    Union All
    Select 'msdb', name From msdb.sys.tables;
    

    Tom

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.