Azure混合连接无法与SQL Server命名实例一起使用

时间:2017-11-01 07:56:57

标签: sql-server azure tcp azure-web-sites windows-server-2012

我尝试使用命名实例为 Windows Server 2012 上运行的内部部署SQL Server 创建混合连接 即可。我确实提供了我的服务器地址作为端点以及1433端口。我还根据文档将SQL Server配置为静态端口以及允许到这些端口的出站连接(9350 - 9354,5671,80,443)。但是,当我尝试从我的Azure应用程序访问数据库时,我得到了" 与服务器成功建立了连接,但在登录前握手期间发生了错误。& #34; (评论中提到的完整堆栈跟踪)。

但是,当我尝试使用默认实例创建与另一个本地SQL Server的混合连接时,使用与上面相同的设置,它可以正常工作。

到目前为止,无法找到对此行为的足够强大的解释。

2 个答案:

答案 0 :(得分:1)

经过相当多的研究和实验,我终于找到了解决问题的方法。实际上,需要为客户端和服务器启用TLS 1.0(来自Windows注册表)。

以下是让您的命名实例运行的注册表的正确值:

  • [HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ SecurityProviders \ SCHANNEL \协议\ TLS 1.0]
  • [HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ SecurityProviders \ SCHANNEL \协议\ TLS 1.0 \ Client]“DisabledByDefault”= dword:00000000“Enabled”= dword:00000001
  • [HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ SecurityProviders \ SCHANNEL \协议\ TLS 1.0 \ Server]“DisabledByDefault”= dword:00000000“Enabled”= dword:00000001

另请注意,Hybrid连接通过端口进行通信,因此请注意,如果您有多个SQL Server实例,请确保每个实例都在另一个静态TCP端口进行侦听。

答案 1 :(得分:-1)

对于其他不想与Windows注册表项打交道的人,这是基于@evilSnobu的评论的另一种答案。

我正在使用SQL Server 2017和命名数据库实例。我必须进入SQL Server配置管理器,依次转到“ SQL Server网络配置”>“ [实例数据库的协议]”>右键单击“ TCP / IP”>“属性”。转到“ IP地址”标签的底部,删除“ TCP动态端口”值,然后用1433填写“ TCP端口”。

最后,重新启动SQL Server实例。另外值得一提的是,如果您使用的是连接字符串,请确保指定了实例名称。

SQL Server Network Configuration TCP/IP Properties