如果没有更多细节,很难给出直接的例子,但基本思想如下:
首先,在存储过程之外,主机服务器(存储过程所在的服务器)必须了解第二台服务器,包括(可能)登录信息。
在您的主服务器上,运行sp_addlinkedserver https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-addlinkedserver-transact-sql?view=sql-server-ver15存储过程。这只需要完成一次:
exec sp_addlinkedserver @server='(your second server)';
If您需要向第二个服务器提供登录信息(例如,该进程无法使用初始数据库连接中使用的相同凭据登录),请使用sp_addlinkedsrvlogin https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-addlinkedsrvlogin-transact-sql?view=sql-server-ver15存储过程:
exec sp_addlinkedsrvlogin @rmtsrvname='(your second server)',
@useself=false,
@rmtuser='yourusername',
@rmtpassword='yourpassword';
然后,在存储过程中,您可以指定第二台服务器上的表:
SELECT table1.*
FROM table1
INNER JOIN [secondserver].[database].[schema].[table] AS table2 ON
table1.joinfield = table2.joinfield