你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure SQL 托管实例连接类型

适用于:Azure SQL 托管实例

本文介绍 Azure SQL 托管实例 的 VNet 本地终结点可用的不同连接类型以及如何对其进行配置。

连接类型

Azure SQL 托管实例的 VNet 本地终结点支持两种连接类型: 重定向 (默认)和 代理 (旧版)。

重定向连接类型(默认值)

从 2025 年 10 月开始,重定向连接类型是 SQL 客户端连接到 Azure SQL 托管实例的默认首选方法。 通过重定向,SQL 客户端直接建立与托管数据库的节点的连接。 与旧代理连接类型相比,重定向连接类型具有更好的延迟和吞吐量性能。 重定向还会最大程度地减少网关组件的计划内维护事件的中断,因为一旦建立重定向连接,就不依赖于网关。

重定向连接类型的优点仅适用于支持 TDS 版本 7.4 或更高版本的 SQL 客户端,该版本随 SQL Server 2012 一起发布。 旧客户端仍可以通过重定向进行连接,但通过性能较低的代理连接类型进行路由。 SQL Server 2012 及更高版本中提供的 SQL 驱动程序充分利用重定向连接类型。 有关推荐的 TDS 驱动程序的列表,请参阅 建议的驱动程序和工具版本

若要使用重定向连接类型,需要满足以下先决条件:

  • 必须允许从 SQL 客户端到 SQL 托管实例的流量通过实例子网地址范围内的端口 1433。 确保子网的入站网络安全组(NSG)规则、SQL 客户端主机的出站规则以及网络路径中的任何网络设备都允许客户端访问整个子网范围。
  • SQL 客户端必须能够解析 Azure DNS 中定义的 SQL 托管实例域中的 <dns-zone>.database.windows.net 域名。

在重定向连接类型中,建立到 SQL Server 数据库引擎的 TCP 会话后,客户端会话将从负载均衡器获取虚拟群集节点的目标虚拟 IP 地址。 后续数据包会绕过网关直接流向虚拟群集节点。 下图演示了此流量流:

此图显示了一个本地网络,其中重定向查找数据库(redirect-find-db)连接到 Azure 虚拟网络中的网关,而重定向查询(redirect-query)连接到虚拟网络中的数据库主节点。

代理连接类型(旧版)

代理是一种旧的连接机制,它通过牺牲性能来确保与 7.4 之前的 TDS 驱动程序的严格兼容性。 此连接类型通过内部网关代理传入连接。 由于内部网关转发连接,代理连接可能会与重定向连接类型相比,造成严重的延迟下降和吞吐量降低的连接瓶颈。 此外,由于网关组件的计划内维护事件,代理连接类型会生成更多的断开连接事件。

只有在调试连接问题时或尝试使用不遵循当前 TDS 标准的自定义驱动程序进行连接时,才应使用显式代理连接类型。 在常规情况下,重定向连接模式会自动引导较旧的 SQL 客户端通过代理连接路径。

下图演示了通过网关的代理 TCP 流:

此图显示了一个本地网络,其中代理连接到 Azure 虚拟网络中的网关,连接到虚拟网络中的数据库主节点旁边。

“默认”连接类型

proxyOverride=Default值已弃用,因为它现在充当重定向连接类型的别名。 从 2025 年 10 月开始,当你以编程方式部署或更新 SQL 托管实例(通过使用 REST API、Azure CLI 或 PowerShell),并将参数设置为proxyOverrideDefault时,该值将被解释为Redirect。 本身的值 Default 永远不会保留在 SQL 托管实例的属性中。 因此,在将proxyOverride设置为Default的24小时后,后续请求获取SQL托管实例的详细信息时,显示proxyOverride参数的值为Redirect

注意

proxyOverride 值设置为 Default 2025 年 10 月之前的 SQL 托管实例转换为 Proxy

更改连接类型

  • 使用 Azure 门户: 若要使用 Azure 门户更改连接类型,请转到 SQL 托管实例 的网络部分, 更改 连接类型 设置并保存更改。

  • 使用 PowerShell 编写更改连接类型设置的脚本:

以下 PowerShell 脚本演示如何将 SQL 托管实例的连接类型更改为 Redirect

Install-Module -Name Az
Import-Module Az.Accounts
Import-Module Az.Sql

Connect-AzAccount
# 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