我在sql server 2008 r2中创建了一个存储过程,我用它来引用来自2个不同数据库的表,它们在同一个sql实例中定义如下: -
[DB1].[dbo].[Technology]
[DB2].[dbo].[SystemInfo]
目前我们将DB2迁移到单独的数据库实例上,但是在同一个数据库服务器上,那么现在我如何在新实例上引用[DB2].[dbo].[SystemInfo]
?
答案 0 :(得分:3)
如果您将一个数据库移动到其他实例,那么您应该将该实例添加为链接服务器,将其称为[lnkDB]
,然后您可以像查询一样:
select * from [lnkDB].[DB2].[dbo].[SystemInfo]
加入不会有所不同。您只应在从链接服务器引用表时添加servernane。
答案 1 :(得分:2)
我尝试更好地解释编写查询。
SELECT *
FROM [DB1].[dbo].[Technology] AS T INNER JOIN [Name_of_linked_server].[dbo][SystemInfo] AS S
ON T.[KEY] = S.[KEY]
如果数据库是不同的服务器,则需要链接服务器:
https://msdn.microsoft.com/EN-US/library/ff772782(v=sql.110).aspx
答案 2 :(得分:1)
这在你的问题中写得很简单
select a.clo1,b.clo2
from [DB1].[dbo].[Technology] a
join [Link_server].[DB2].[dbo].[SystemInfo] b on a.col1=b.col1
where (any condition)
但数据库用户必须能够访问这两个数据库。