1、首先是执行远程连接
exec sp_addlinkedserver '连接名字', ' ', 'SQLOLEDB ', '远程数据库IP' ;
exec sp_addlinkedsrvlogin '连接名字', 'false ',null, '远程数据库帐号', '远程数据库密码' ;
说明:连接名字可以自己随便起,主要连接名字是用在后面的调用,下面有介绍到。
2、开启 RPC
EXEC master.dbo.sp_serveroption @server=N'连接名字', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'连接名字', @optname=N'rpc out', @optvalue=N'true'
说明:这里的连接名字就是第一点提到的连接名字。(相当于第一点把连接名字定义成一个变量,下面调用)。
3、执行存储过程
EXEC [连接名字].[数据库名].DBO.SP_EXECUTESQL N'存储过程名称'
说明:连接名字用第一点提到的连接名,数据库名就是远程的数据库名,存储过程名称就是远程数据库里要调用的那个存储过程名称。
附言:远程查询数据库的几种办法
SELECT * FROM [连接名字].[数据库名].dbo.表
SELECT * FROM OPENQUERY([连接名字],'SELECT * FROM 数据库名.dbo.表')
SELECT * FROM OPENDATASOURCE('SQLNCLI','Data Source=;Integrated Security=SSPI').DB.dbo.表
SELECT * FROM OPENROWSET('SQLNCLI','Server=数据库ip或机器名;Trusted_Connection=yes;','SELECT * FROM DB.dbo.表') AS a;