本文介绍客户端如何根据连接类型连接到 Azure SQL 托管实例的 VNet 本地终结点、如何更改连接类型,以及更改默认连接设置时的注意事项。
Azure SQL 托管实例的 VNet 本地终结点支持两种连接类型: 重定向 (建议)和 代理 (默认值)。
重要
强烈建议对所有 SQL 托管实例使用重定向连接策略,除非 SQL 客户端不支持 TDS 重定向。
重定向是 SQL 客户端连接到 Azure SQL 托管实例的首选方法。 通过重定向,客户端直接建立与托管数据库的节点的连接。 与代理相比,重定向连接类型具有更好的延迟和吞吐量性能。 重定向还将网关组件的计划内维护事件的影响降到最低,因为重定向连接一旦建立,就不依赖于网关。
若要使用重定向连接类型,需要以下两个先决条件:
- SQL 托管实例子网的网络安全组 (NSG) 规则,以及从 SQL 客户端到 SQL 托管实例路径上的任何防火墙,必须允许在端口 1433 和端口范围 11000-11999 上进行入站访问,这适用于分配给 SQL 托管实例子网的整个 IP 地址范围。
- 连接客户端必须支持表格数据流 (TDS) 7.4 或更高版本。 TDS 7.4 首次发布Microsoft SQL Server 2012,因此任何符合该版本的 SQL 驱动程序都使用重定向连接类型。 有关推荐的 TDS 驱动程序的列表,请参阅 建议的驱动程序和工具版本。
注意
Azure SQL 托管实例正在缓慢地推出对使用端口 1433 进行所有流量的重定向机制的改进。 有关端口 11000-11999 的先决条件仍具有权威性,并且无需对现有 NSG 和 RT 进行更改,直到收到进一步通知
在重定向连接类型中,建立到 SQL 数据库引擎的 TCP 会话后,客户端会话将从负载均衡器获取虚拟群集节点的目标虚拟 IP。 后续数据包会绕过网关直接流向虚拟群集节点。 下图演示了此流量流:
代理是支持与实现早于 7.4 版本的 TDS 版本的 SQL 驱动程序兼容的默认连接机制。 此连接类型通过一个内部网关来代理传入的连接,因此只需为入站流量开放端口 1433 即可。 由于内部网关转发连接,代理连接可能会造成连接瓶颈,严重降低延迟,并降低与重定向连接类型相比的吞吐量。 此外,由于网关组件的计划内维护事件,代理连接类型会生成更多的断开连接事件。
下图演示了通过网关的代理 TCP 流:
使用 Azure 门户: 若要使用 Azure 门户更改连接类型,请打开 SQL 托管实例的 “虚拟网络 ”页,并使用 “连接类型 ”设置更改连接类型并保存更改。
使用 PowerShell 编写更改连接类型设置的脚本:
以下 PowerShell 脚本演示如何将 SQL 托管实例的连接类型更改为 Redirect
。
Install-Module -Name Az
Import-Module Az.Accounts
Import-Module Az.Sql
Connect-AzAccount -Environment AzureChinaCloud
# Get your SubscriptionId from the Get-AzSubscription command
Get-AzSubscription
# Use your SubscriptionId in place of {subscription-id}
Select-AzSubscription -SubscriptionId {subscription-id}
# Replace {rg-name} with the resource group for your SQL managed instance, and replace {mi-name} with the name of your SQL managed instance
$mi = Get-AzSqlInstance -ResourceGroupName {rg-name} -Name {mi-name}
$mi = $mi | Set-AzSqlInstance -ProxyOverride "Redirect" -force