无法连接到 Azure SQL 数据库,即使已将 IP 加入白名单

22

我目前无法从私人数据中心的独立远程专用框架连接到我的Azure SQL数据库。

我有一个Azure SQL数据库,我管理可以连接到这个数据库的IP地址列表。这一直工作得很完美,直到现在。最近我在私人数据中心设置了一个需要以每5秒左右的时间间隔查询Azure SQL数据库的新专用框架。

问题是,尽管这个专用框架可以连接到其他远程FTP服务器、MySQL服务器等,但它无法建立与Azure SQL数据库的连接。Azure SQL数据库确实将专用框架的IP地址添加到了允许连接列表中。此外,我临时打开了一个大范围的允许IP地址(0.0.0.0->255.255.255.255)来查看是否由于IP阻塞导致无法连接。

有没有人对可能导致这种情况以及如何更好地开始调试这种情况有任何建议或想法?

为了澄清:我可以从办公室和其他地方具有单独IP地址的笔记本电脑连接到Azure SQL数据库,只要它们已被添加到数据库白名单中;我可以从专用框架向远程FTP和MySQL服务器进行外部连接;我尝试在Azure SQL上打开大范围的允许IP地址,但没有成功。

编辑

C:\Users\graphite.rack.ID17157>osql -S v7o06blktw.database.windows.net -U XXXXXXX@v7o06blktw -P XXXXXXX  
[SQL Server Native Client 11.0] Named Pipes Provider: Could not open a
connection to SQL Server [53].  
[SQL Server Native Client 11.0] Login timeout expired  
[SQL Server Native Client 11.0] A network-related or instance-specific error
has occurred while establishing a connection to SQL Server. Server is not
found or not accessible. Check if instance name is correct and if SQL Server
is configured to allow remote connections. For more information see SQL Server
Books Online.

换句话说,问题是从专用服务器连接到 SQL Azure,而不是 IP 阻止?您能否非常简单地连接,例如使用 osql 命令行工具或 SSMS 在专用服务器上,以消除其他变量,如应用程序错误? - mellamokb
3
当连接失败时,您是否收到任何错误消息?输出端口1433是否打开? - mcollier
看看你的专用服务器。关闭防火墙和其他安全设置。它能连接到另一个 SQL 服务器吗?这可能是 SQL Azure 的问题,但你需要考虑其他故障点。 - paparazzo
我的Azure Web和服务角色无法连接到SQL Azure数据库;我尝试了重新发布和将各种IP范围(包括0-255)列入白名单,但都没有成功。我怀疑即将出现故障。 - jpda
@mellamokb 看起来只有在我从专用服务器连接到 SQL Azure 时才会出现问题。我可以从其他地方的其他机器成功连接到 SQL Azure。我尝试使用 Microsoft SQL Server Management Studio 建立连接,以及从我构建的 Web 应用程序中的基本标准连接字符串来测试连接。 - jtromans
显示剩余6条评论
3个回答

27

总结:

Windows Azure SQL数据库(之前称为SQL Azure)仅在TCP端口1433上运行。截至今日,它只支持SQL Server身份验证、TCP连接和TDS协议。

为了成功地建立与SQL Azure的连接,必须满足以下要求:

  • 创建SQL Azure服务器和数据库
  • 设置SQL Azure服务器的防火墙规则以接受将连接到该服务器的应用程序的IP地址的连接
  • 确保虚拟机,家庭网络或任何其他计算机没有阻止出站TCP端口1433
  • 在连接字符串中明确强制加密
  • 在连接字符串中明确选择不信任服务器证书

请注意,许多(如果不是全部)互联网服务提供商(ISP)和主机企业以及公司内的IT人员由于SQL Slammer蠕虫等原因会阻止出站TCP端口1433。这种出站端口的阻止似乎是新手面对SQL Azure最常见的问题之一。

2015年11月更新

自2015年8月起,有一项预览功能使您能够使用Azure AD进行身份验证以连接到Azure SQL数据库。您可以在此处阅读有关这种新预览功能的更多信息:https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/


1
非常感谢您的认真回复,astaykov。我相信ISP已经出于您所述的原因阻止了TCP端口1433。我会跟进并查明情况。 - jtromans
@jtromans 我怎么知道我的ISP是否已经阻止了TCP端口1433? - GMan
@GMan,通过联系技术支持并提出问题。 - astaykov
你可以尝试访问已知开放的主机上的相同端口。否则,调用是合理的。 - jtromans
8
如果您可以访问http://portquiz.net:1433/这个页面,那么您的端口没有被阻塞。 - bazzilic
显示剩余3条评论

3
如果您在使用公司网络进行互联网访问时遇到问题,一个简单的解决方法是改用手机的移动热点来访问互联网。同时,请务必关闭可能连接到互联网的以太网连接。

1

我在这个问题上花了好几个小时。最终发现解决方法是我的Xfinity防火墙设置问题。我原本将其设置为高级别安全,但一旦我将其设置为低级别安全,我就可以无问题地连接到Azure SQL数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接