连接存储过程内不同数据库实例上的表

时间:2015-05-26 09:13:32

标签: sql sql-server stored-procedures sql-server-2008-r2

我在sql server 2008 r2中创建了一个存储过程,我用它来引用来自2个不同数据库的表,它们在同一个sql实例中定义如下: -

[DB1].[dbo].[Technology]


[DB2].[dbo].[SystemInfo]

目前我们将DB2迁移到单独的数据库实例上,但是在同一个数据库服务器上,那么现在我如何在新实例上引用[DB2].[dbo].[SystemInfo]

3 个答案:

答案 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)

但数据库用户必须能够访问这两个数据库。