C#Web应用程序未通过Azure混合连接连接到本地SQL Server

时间:2017-12-11 02:24:53

标签: c# sql-server azure

到目前为止我采取的步骤

  1. 我已禁用防火墙并将SQL Server配置为允许远程连接
  2. 验证混合连接管理器是否已建立连接
  3. 修改连接字符串以指定TCP端口
  4. 如果您有任何进一步的建议,请与我们联系。

2 个答案:

答案 0 :(得分:1)

最近我还参与了Azure混合连接,并列出了我遇到的所有可能出现的问题。以下之一可能是原因:

  • 混合连接可能仅适用于SQL Server的默认实例,并且在使用命名实例时可能会失败。即使命名实例配置为使用静态TCP端口,但可能无法与混合连接一起使用。 可能的原因可能是您的命名实例可能正在侦听与默认实例相同的TCP端口。由于混合连接使用端口进行通信,因此在多个实例正在侦听同一端口的情况下,无论您在命名实例中提供了什么实例,混合连接都可以与任何实例进行通信。
  • 要使混合连接正常工作,您需要在本地计算机上为服务器和客户端启用TLS 1.0。您需要添加以下注册值(如果尚未添加):
[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
  • 只有连接字符串使用SQL身份验证,即在连接字符串中指定用户名和密码时,混合连接才有效。因此,您无法使用Windows身份验证。
  • 虽然您不需要为入站连接打开任何防火墙端口,但您需要允许出站连接到以下端口列表: 9350 - 9354, 5671, 80, 443
  • Azure混合连接需要Windows 8 / Windows Server 2012或更高版本才能使用。原因是混合连接使用早期Windows版本不支持的Web套接字。虽然您可以使用经典的混合连接(现在已删除)来使用早期的Windows。
  • 最好使用端点的完全限定机器名称而不是IP地址。如果您的机器的IP不太可能在那里使用,它可能没有效果,但是在IP可能发生变化的情况下,您应该使用机器名称并让HCM为您处理其他所有事情。

还可以找到创建混合连接的非常全面的演练here

希望这能解决你的问题。

答案 1 :(得分:1)

感谢回复,我终于弄明白了。我犯的错误是我只是在指定azure和我的代码中指定SQL Server名称和端口号(在我的情况下为433)连接字符串后面只有提到的服务器名称。

enter image description here

然而,当我更新后面代码中的连接字符串以包含TCP端口时,我能够成功运行应用程序与Hybrid连接一起查询来自SQL Server的结果。

enter image description here