我有两个具有相同配置的 SQL Server 2012 [v11.0.6020] 实例,Test
和Production
。
在两台服务器上,我都使用此脚本创建了一个链接服务器
EXEC sp_addlinkedserver
@server='myLinkedServer',
@srvproduct='',
@provider='SQLNCLI10',
@datasrc='ERP01',
@location='',
@provstr='',
@catalog='Northwind'
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'myLinkedServer',
@useself = 'false',
@rmtuser = 'user01',
@rmtpassword = 'user01pass'
EXEC sp_serveroption 'myLinkedServer', 'rpc out', true;
在测试服务器上,我可以运行并从下面的脚本中获取结果
Declare @P01_In nvarchar(10),@P01_Out nvarchar(10) ,
EXEC myLinkedServer.Northwind.dbo.MyProc01 @P01_In,@P01_Out output
select @P01_Out
但是如果我在生产服务器中运行相同的内容,则会出现错误:
无法在远程服务器"myLinkedServer"上执行过程"MyProc01">
请注意,远程访问标志在两个服务器中都是"1">
请建议
通过为链接的服务器提供程序启用"允许进程内"选项解决了问题。 SQL Server Management Studio、Opne Linked Servers、Open Provider,选择您的链接服务器提供程序属性,然后启用"允许进程内"选项