我想从我们的本地服务器 (SQL 2014) 查询供应商 Azure SQL PDWH,以从该 Azure SQL PDWH 中提取数据并插入到位于本地服务器上的数据库中。最后,这应该通过驻留在本地数据库中并经过调度的存储过程实现自动化。
为此,我使用在此处找到的以下脚本在 Azure SQL DWH 和我们的本地服务器之间设置了一个链接服务器:
https://blogs.msdn.microsoft.com/sqlcat/2011/03/07/linked-servers-to-sql-azure/
/*
Create new linked server
*/
-- Make a link to the cloud
EXEC sp_addlinkedserver
@server=N'read_only_dwhs',
@srvproduct=N'Azure SQL Db',
@provider=N'SQLNCLI',
@datasrc=N'server.database.windows.net,1433',
@catalog='xxxxxx';
GO
--Set up login mapping
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'read_only_dwhs',
@useself = 'FALSE',
@locallogin=NULL,
@rmtuser = 'xxxxxx',
@rmtpassword = 'xxxxxx'
GO
Run Code Online (Sandbox Code Playgroud)
这些语句运行时没有错误。但是,当我执行sp_testlinkedserver 时,它会在大约 10 秒后返回超时错误。
链接服务器“read_only_dwhs”的 OLE DB 访问接口“SQLNCLI11”返回消息“登录超时已过期”。
链接服务器“read_only_dwhs”的 OLE DB 访问接口“SQLNCLI11”返回消息“由于登录前响应延迟,无法完成登录过程”。
消息 258,级别 16,状态 1,第 23 行 TCP 提供程序:超时错误 [258]。
我与 IT 部门进行了核实,他们确认防火墙没有阻止与此相关的任何内容,并且启用了 TCP/IP。我们的供应商还确认我们的 IP 已添加到 Azure 防火墙。我通过 Visual Studio 社区 2015 直接从 Azure SQL PDWH 数据库查询没有问题。
还有像这样的工具:http : //sqlazuremw.codeplex.com/在连接时给出同样的错误。
我搜索了几个小时,但无论我做什么,它都会返回相同的错误消息。
任何帮助表示赞赏。
2016 年 09 月 27 日更新:
经过与 IT 的更多测试后,这似乎与我们的防火墙设置有关。
当我通过数据库从本地服务器(通过远程桌面连接)直接查询到 Azure DWH 时,我没有收到任何错误,一切正常。我还可以使用相同的本地数据库从本地计算机进行查询。
但是,当另一位同事登录到本地服务器时,我无法再从本地计算机进行查询(出现上述超时错误),直到我使用我的凭据再次登录到(本地)服务器。
我认为防火墙规则过于严格,如果我的凭据在本地服务器上处于活动状态,则只允许向 Azure DWH 发送/接收信息。
2016 年 09 月 28 日更新:该问题目前似乎已解决。IT 设法将正确的设置应用到防火墙。即使同事登录到服务器,服务器现在也可以与 Azure DWH 通信。
这可能对其他人有所帮助。
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |