ChatGPT解决这个技术问题 Extra ChatGPT

我们可以对两个不同的数据库表使用连接吗?

我们可以对来自不同数据库的两个表使用连接操作吗?如果是,我该怎么做?

两个数据库都在同一台服务器上,并且 DBMS 是相同的。


L
LukasKroess

SQL Server 允许您连接来自不同数据库的表,只要这些数据库位于同一服务器上。连接语法是一样的;唯一的区别是您必须完全限定表名。

假设您在同一台服务器上有两个数据库 - Db1Db2Db1 有一个名为 Clients 的表,其中有一个列 ClientId,而 Db2 有一个名为 Messages 的表,其中有一个列 ClientId(让我们先不管这些表位于不同数据库中的原因)。

现在,要对上述表执行连接,您将使用以下查询:

select *
from Db1.dbo.Clients c
join Db2.dbo.Messages m on c.ClientId = m.ClientId

或许应该注意的是,两个数据库必须可以在相同的安全上下文中访问。换句话说,如果您使用两个数据库的不同凭据登录,那么上述方法将不起作用。在这种情况下,您可能必须使用“链接服务器”。
正如@IanGoldby 提到的,您可以使用链接服务器。当您链接服务器时,可以定义身份验证方法 - 使用用户上下文或使用仅为链接配置的凭据。
K
K. B.

您可以在数据库中使用同义词部分。

https://i.stack.imgur.com/iiKhP.png

https://i.stack.imgur.com/za7Sz.png