sco*_*rin 15
没有更多细节,很难给出直接的例子,但这里有一个基本的想法:
首先,在存储过程之外,主机服务器(存储过程将在其上的服务器)必须知道第二服务器,包括(可能)登录信息.
在主服务器上,运行sp_addlinkedserver存储过程.这只需要做一次:
exec sp_addlinkedserver @server=’(your second server)‘;
Run Code Online (Sandbox Code Playgroud)
如果需要向第二个服务器提供登录信息(例如,进程无法使用初始数据库连接中使用的相同凭据登录),请使用sp_addlinkedsrvlogin存储过程执行此操作:
exec sp_addlinkedsrvlogin @rmtsrvname=’(your second server)‘,@useself=false, @rmtuser=’yourusername‘, @rmtpassword=’yourpassword‘;
Run Code Online (Sandbox Code Playgroud)
然后,在存储过程中,您可以在第二台服务器上指定表:
SELECT table1.*
FROM table1
INNER JOIN [secondserver].[database].[schema].[table] AS table2 ON
table1.joinfield = table2.joinfield
Run Code Online (Sandbox Code Playgroud)
1.检查您是否有任何链接服务器使用exec sp_helpserver
2.如果您的服务器未返回,则并不Linked意味着您需要添加它。否则转到第 3 步。
对于Sql Server 2008 R2,请转到Server Object > Linked Servers > Add new Linked Server
或者
exec sp_addlinkedserver @server='ServerName';
Run Code Online (Sandbox Code Playgroud)
3.像这样连接到辅助服务器...
exec sp_addlinkedsrvlogin
@rmtsrvname='ServerName'
, @useself=false
, @rmtuser='user'
, @rmtpassword='Password';
Run Code Online (Sandbox Code Playgroud)
4.现在您可以联接两个不同服务器的表。
SELECT
SRV1.*
FROM
DB1.database_name.dbo.table_name SRV1
INNER JOIN DB2.database_name.dbo.table_name SRV2
ON SRV1.columnId = SRV2.columnId
GO
Run Code Online (Sandbox Code Playgroud)