通过存储过程访问另一个SQL Server

时间:2016-04-12 14:04:50

标签: sql sql-server stored-procedures sql-server-2012 linked-server

我想访问另一个SQL Server,通过存储过程导入和更新该服务器数据库的数据。

为此,我使用sp_addlinkedserver创建了链接服务器。

EXEC sp_addlinkedserver 
    @server = N'LINKEDSERVER'
    ,@srvproduct=N''
    ,@provider=N'SQLOLEDB'
    ,@datasrc=N'[DB-Instance.cuprxxxlj.ap-xxxxxxx-x.rds.amazonaws.com]';

然后尝试通过SQL查询访问

SELECT * 
FROM [LINKEDSERVER].[DATABASE].[dbo].[TABLE]

收到错误,如

  

OLE DB提供程序" SQLNCLI11"对于链接服务器" LINKEDSERVER"返回消息"登录超时已过期"。

     

OLE DB提供程序" SQLNCLI11"对于链接服务器" LINKEDSERVER"返回消息"建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确以及SQL Server是否配置为允许远程连接。有关详细信息,请参阅SQL Server联机丛书。"。

     

Msg 53,Level 16,State 1,Line 0
  命名管道提供程序:无法打开与SQL Server的连接[53]。

我在亚马逊服务器上创建了数据库实例,另一个也在亚马逊服务器上,两者都可以公开访问,但我不知道为什么我会Server is not found or not accessible。我是否遗漏了任何服务器站点设置或其他内容?

如果我的方向错误,请指导我。

2 个答案:

答案 0 :(得分:1)

我找到了答案。问题是一个实例,我创建了“Amazon RDS for SQL Server”,目前不支持“链接服务器”。

因此,我为Windows Server 2012 R2创建了一个新的AWS EC2实例,然后在其中创建了Linked服务器并尝试远程评估。现在我的工作正常。

以下是在AWS上运行SQL Server链接服务器的详细document

感谢。

答案 1 :(得分:0)

也许尝试更改超时设置?

sp_configure 'remote query timeout', 0 
go 
reconfigure with override 
go