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

问题描述 投票:3回答:2

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

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

到目前为止,找不到足够强的解释。

sql-server azure tcp azure-web-sites windows-server-2012
2个回答
1
投票

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

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

  • [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Protocols \ TLS 1.0]
  • [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Protocols \ TLS 1.0 \ Client]“DisabledByDefault”= dword:00000000“Enabled”= dword:00000001
  • [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Protocols \ TLS 1.0 \ Server]“DisabledByDefault”= dword:00000000“Enabled”= dword:00000001

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


-1
投票

对于其他任何有这个问题并且不想弄乱Windows注册表密钥的人来说,这是基于@ evilSnobu评论的另一个答案。

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

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

SQL Server Network Configuration TCP/IP Properties

© www.soinside.com 2019 - 2024. All rights reserved.