通过


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

与 AG 和 DNN 侦听器的功能互操作性

适用于:Azure VM 上的 SQL Server

提示

部署可用性组的方法有很多种。 通过在同一 Azure 虚拟网络中的多个子网中创建 SQL Server 虚拟机 (VM),可以简化部署,使 Always On 可用性组不再需要 Azure 负载均衡器或分布式网络名称 (DNN)。 如果已在单个子网中创建可用性组,可以将其迁移到多子网环境

某些 SQL Server 功能依赖于硬编码的虚拟网络名称(VNN)。 将分布式网络名称(DNN)侦听器与单个子网中的 Azure VM 上的 AlwaysOn 可用性组和 SQL Server 配合使用时,可能会遇到一些限制。

本文介绍与可用性组 DNN 侦听器的 SQL Server 功能和互操作性。

行为差异

请注意 VNN 侦听器和 DNN 侦听器的功能之间的以下差异:

  • 故障转移时间:使用 DNN 侦听器时故障转移时间更快,因为无需等待网络负载均衡器检测故障事件并更改其路由。
  • 现有连接:故障转移可用性组内 与特定数据库的 连接关闭,但与主副本的其他连接保持打开状态,因为 DNN 在故障转移过程中保持联机状态。 此行为不同于传统的 VNN 环境,当可用性组故障转移时,与主副本的所有连接通常会关闭,侦听器脱机,主副本将转换为辅助角色。 使用 DNN 侦听器时,可能需要调整应用程序连接字符串,以确保在故障转移时将连接重定向到新的主副本。
  • 开放事务:针对故障转移可用性组中的数据库的开放事务会关闭并回滚,你需要手动重新连接。 例如,在 SQL Server Management Studio 中,关闭查询窗口并打开一个新窗口。

客户端驱动程序

对于 ODBC、OLEDB、ADO.NET、JDBC、PHP 和 Node.js 驱动程序,请将 DNN 侦听器名称和端口指定为连接字符串中的服务器名称。 若要确保故障转移时的快速连接,请将 MultiSubnetFailover=True 添加到连接字符串(如果 SQL 客户端支持它)。

工具

SQL Server Management StudiosqlcmdSQL Server Data Tools 的用户需要将 DNN 侦听器名称和端口指定为连接字符串中的服务器名称才能连接到侦听器。

目前不支持使用 SQL Server Management Studio (SSMS) GUI 创建 DNN 侦听器。

可用性组和 FCI

可以通过将故障转移群集实例 (FCI) 作为副本之一来配置 Always On 可用性组。 若要使此配置与 DNN 侦听器配合使用, 故障转移群集实例还必须使用 DNN ,因为无法将 FCI 虚拟 IP 地址放在 AG DNN IP 列表中。

在此配置中,FCI 副本的镜像终结点 URL 需要使用 FCI DNN。 同样,如果将 FCI 用作只读副本,则到 FCI 副本的只读路由需要使用 FCI DNN。

镜像终结点的格式为:ENDPOINT_URL = 'TCP://<FCI DNN DNS name>:<mirroring endpoint port>'

例如,如果你的 FCI DNN DNS 名称为 dnnlsnr,并且 5022 是 FCI 的镜像终结点的端口,则用于创建终结点 URL 的 Transact-SQL (T-SQL) 代码片段如下所示:

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

类似地,只读路由 URL 的格式为:TCP://<FCI DNN DNS name>:<SQL Server instance port>

例如,如果你的 DNN DNS 名称为 dnnlsnr,并且 1444 是只读目标 SQL Server FCI 使用的端口,则用于创建只读路由 URL 的 T-SQL 代码片段如下所示:

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

如果端口是默认的 1433 端口,则可以省略 URL 中的端口。 对于命名实例,请为其配置静态端口,并在只读路由 URL 中指定该端口。

分布式可用性组

如果使用分布式网络名称(DNN)配置可用性组侦听器,则无法在可用性组的基础上配置分布式可用性组。

复制

事务性复制、合并复制和快照复制都支持在连接到侦听器的复制对象中将 VNN 侦听器替换为 DNN 侦听器和端口。

有关如何对可用性组使用复制的详细信息,请参阅发布服务器和 AG订阅服务器和 AG以及分发服务器和 AG

MPEG Audio Layer-3

支持本地和群集 MSDTC,但 MSDTC 使用动态端口。 此动态端口需要标准 Azure 负载均衡器才能配置 HA 端口。 因此,VM 必须使用标准 IP 预留,或者不能将其公开给 Internet。

定义两个规则:一个用于 RPC 终结点映射器端口 135,一个用于真正的 MSDTC 端口。 故障转移后,当新节点上的 MSDTC 端口更改时,将负载均衡器规则修改为指向新的 MSDTC 端口。

如果 MSDTC 是在本地运行,请务必允许对外通信。

分布式查询

分布式查询依赖于链接服务器,可以使用 AG DNN 侦听器和端口进行配置。 如果端口不是 1433,则在配置链接服务器时,请在 SQL Server Management Studio (SSMS) 中选择“使用其他数据源”选项。

FILESTREAM

FILESTREAM 是受支持的,但不适用于用户使用 Windows 文件 API 访问有作用域的文件共享的场景。

FileTable

FileTable 受支持,但不适用于用户通过 Windows 文件 API 访问具有作用域的文件共享的场景。

链接服务器

使用 AG DNN 侦听器名称和端口配置链接服务器。 如果端口不是 1433,则在配置链接服务器时,请在 SQL Server Management Studio (SSMS) 中选择“使用其他数据源”选项。

常见问题

哪个 SQL Server 版本支持 AG DNN 侦听器?

SQL Server 2019 CU 8 及更高版本。

使用 DNN 侦听器时预期的故障转移时间是多少?

对于 DNN 侦听器,其故障转移时间与 AG 的故障转移时间相同,不需要额外的时间(例如使用 Azure 负载均衡器时的探测时间)。

若要支持将 DNN 与 OLEDB 和 ODBC 一起使用,对 SQL 客户端是否有任何版本要求?

MultiSubnetFailover=True 连接字符串用于 DNN 侦听器支持。 它从 SQL Server 2012 (11.x) 开始提供。

使用 DNN 侦听器需要更改 SQL Server 配置吗?

SQL Server 不要求更改配置才能使用 DNN,但某些 SQL Server 功能可能需要额外注意一些事项。

DNN 是否支持多网络子网的群集?

是。 群集将 DNS 中的域名节点(DNN)与可用性组中所有实例的物理 IP 地址绑定,无论子网如何。 SQL 客户端会尝试 DNS 名称的所有 IP 地址,不考虑子网。

可用性组 DNN 侦听器是否支持只读路由?

是。 DNN 侦听器支持只读路由。