我尝试使用命名实例为在Windows Server 2012上运行的本地SQL Server创建混合连接。我确实提供了我的服务器地址作为端点以及1433端口。我还将SQL Server配置为静态端口,并根据文档允许出站连接到这些端口(9350 - 9354,5671,80,443)。但是,当我尝试从我的Azure应用程序访问数据库时,我得到“与服务器成功建立了连接,但在登录前握手期间发生了错误。” (评论中提到的完整堆栈跟踪)。
但是,当我尝试使用默认实例创建与另一个本地SQL Server的混合连接时,使用与上面相同的设置,它可以正常工作。
到目前为止,找不到足够强的解释。
经过相当多的研究和实验,我终于找到了问题的解决方案。实际上,需要为客户端和服务器启用TLS 1.0(来自Windows注册表)。
以下是使命名实例运行的注册表的正确值:
另请注意,Hybrid连接通过端口进行通信,因此请注意,如果您有多个SQL Server实例,请确保每个实例都在不同的静态TCP端口上进行侦听。