次の方法で共有

托管实例概述的链接

适用于:Azure SQL 托管实例

本文概述了托管实例链接,该功能支持 SQL Server 和 Azure SQL 托管实例之间的准实时数据复制。 该链接提供混合灵活性和数据库移动性,因为它解锁许多方案,例如缩放只读工作负荷、将分析和报告卸载到 Azure 以及迁移到 Azure。 此外,使用 SQL Server 2022 时,可通过该链接进行联机灾难恢复,故障恢复到 SQL Server,以及配置从 SQL 托管实例到 SQL Server 2022 的链接。

若要开始,请查阅为链接准备好环境

概述

托管实例链接使用 分布式可用性组 以安全可靠的方式扩展数据资产。 它将几乎实时的数据从任何位置托管的 SQL Server 复制到 Azure SQL 托管实例,或从 Azure SQL 托管实例复制到任何位置托管的 SQL Server 2022。

链接功能支持单节点和多节点 SQL Server 示例,无论是否带有现有可用性组。 通过链接,你可以利用 Azure 的优势,而无需将 SQL Server 数据资产迁移到云。

尽管该链接支持为每个链接复制一个数据库,但可以通过配置多个链接(每个数据库到托管实例对的一个链接)将多个数据库从 SQL Server 的单个实例复制到一个或多个 SQL 托管实例,或将同一数据库复制到多个 SQL 托管实例。

链接功能当前提供以下功能:

  • 从 SQL Server 版本 2016、2017 和 2019 进行单向复制:使用链接功能将数据从 SQL 实例复制到 Azure SQL 托管实例。 尽管在发生灾难时可以手动故障转移到托管实例,但这样做会中断链接,并且不支持故障回复。
  • 灾难恢复(SQL Server 2022):利用链接功能在 SQL Server 2022 和 SQL 托管实例之间复制数据;在灾难发生期间,手动切换到辅助数据库;在灾难缓解后,将切换回主数据库。 SQL Server 或 SQL 托管实例可以是初始主实例。

只要你需要,你可以一直运行该链接,一次可以运行几个月甚至数年。 对于你的新式化之旅,如果或当你准备迁移到 Azure 时,链接可以大幅改善迁移体验。 与可用的所有其他迁移选项相比,通过链接进行迁移时的停机时间最短,并实现向 SQL 托管实例的真正的联机迁移。

可以在多种场景中使用通过 SQL Server 和 Azure SQL 托管实例之间链路复制的数据库,例如:

  • 灾难恢复
  • 在不迁移到云的情况下使用 Azure 服务
  • 将只读工作负荷卸载到 Azure
  • 迁移到 Azure
  • 在本地复制数据

说明主要托管实例链接方案的示意图。

版本可支持性

Azure SQL 托管实例的“常规用途”和“业务关键”服务层级都支持托管实例链接。 链接功能适用于 Enterprise、Developer 和 Standard 版的 SQL Server。

下表列出了链接功能的功能和受支持的最低 SQL Server 版本:

初始主数据库版本 操作系统 (OS) 单向复制 灾难恢复选项 服务更新要求
Azure SQL 托管实例 Windows ServerLinux 用于辅助 SQL Server 实例副本 正式发布 双向 - SQL Server 2022 CU10 (KB5031778):创建从 Azure SQL 托管实例到 SQL Server 2022 的链接 1
- SQL Server 2022 CU13 (KB5036432):使用 Transact-SQL 对链接进行故障转移
- 仅配置了 SQL Server 2022 更新策略的实例,支持配置从 Azure SQL 托管实例到 SQL Server 2022 的链接。
SQL Server 2025 (17.x) 预览版 Windows ServerLinux 预览 仅从 SQL Server 到 SQL MI SQL Server 2025 预览版 CTP 2.0
SQL Server 2022 (16.x) Windows ServerLinux 正式发布 双向 - SQL Server 2022 RTM:创建从 SQL Server 2022 到 Azure SQL 托管实例的链接
- SQL Server 2022 CU13 (KB5036432):使用 Transact-SQL 对链接进行故障转移
SQL Server 2019 (15.x) 仅限 Windows Server 正式发布 仅从 SQL Server 到 SQL MI SQL Server 2019 CU20 (KB5024276)
SQL Server 2017 (14.x) 仅限 Windows Server 正式发布 仅从 SQL Server 到 SQL MI 最新的 SQL Server 2017 CU31 版本和匹配的 SQL Server 2017 Azure Connect 包 生成
SQL Server 2016 (13.x) 仅限 Windows Server 正式发布 仅从 SQL Server 到 SQL MI 最新的 SQL Server 2016 SP3 版本和匹配的 SQL Server 2016 Azure Connect 包版本
SQL Server 2014 (12.x) 和更早版本 不可用 不可用 不可用 不支持 SQL Server 2016 之前的版本。

1 从 SQL Server 2022 的 RTM 版本开始,支持在使用 SQL Server 2022 作为初始主实例的情况下创建链接,而仅从 SQL Server 2022 CU10 开始,支持在使用 Azure SQL 托管实例作为初始主实例的情况下创建链接。 如果从初始主 SQL 托管实例创建链接,则在链接处于活动状态时不支持将 SQL Server 降级至低于 CU10 版本,因为沿任一方向进行故障转移后都可能会导致问题出现。

不支持 SQL Server 2016 之前的 SQL Server 版本 (SQL Server 2008 - 2014),因为链接功能依赖于在 SQL Server 2016 中引入的分布式可用性组技术。

除了受支持的 SQL Server 版本,你还需要:

  • 在 SQL Server 实例和托管实例之间建立网络连接。 如果 SQL Server 在本地运行,请使用 VPN 链路或 Azure ExpressRoute。 如果 SQL Server 在 Azure 虚拟机 (VM) 上运行,请将 VM 部署到托管实例所在的虚拟网络,或使用虚拟网络对等互连来连接两个单独的子网。
  • 预配到任何服务层级的 Azure SQL 托管实例部署。

还需要以下工具:

工具 备注
最新的 SSMS SQL Server Management Studio (SSMS) 是使用托管实例链接的最简单的方法,因为它提供可自动设置链接的向导。
最新的 Az.SQLAzure CLI 对于通过脚本设置链接。

SQL 托管实例的链接功能的工作原理是,在 SQL Server 和 Azure SQL 托管实例之间创建分布式可用性组。 该解决方案支持有或没有现有可用性组的单节点系统,或具有现有可用性组的多节点系统。

显示 SQL 托管实例的链接功能如何使用分布式可用性组技术工作的关系图。

专用连接(例如 VPN 或 Azure ExpressRoute)连接本地网络和 Azure。 如果您在 Azure VM 上托管 SQL Server,则可以利用 Azure 内部主干网络通过诸如虚拟网络对等互连之类的方式连接 VM 和 SQL 托管实例。 这两个系统使用基于证书的身份验证建立信任,其中 SQL Server 和 SQL 托管实例交换各自证书的公钥。

Azure SQL 托管实例支持从相同或不同的 SQL Server 源到单个 Azure SQL 托管实例的多个链接。 链接数取决于托管实例可以同时托管的数据库数 - 常规用途和业务关键服务层级最多 100 个链接。 单个 SQL Server 实例可以创建具有多个 SQL 托管实例的多个并行数据库同步链接,即使在不同的 Azure 区域中,数据库与托管实例之间也存在一对一关系。

若要帮助你设置初始环境,请参阅准备 SQL Server 环境以将链接功能与 SQL 托管实例配合使用的指南:

满足初始环境要求后,使用 SQL Server Management Studio(SSMS)中的自动向导创建链接,或使用脚本手动设置链接:

创建链接后,请遵循最佳做法来维护链接:

灾难恢复

使用托管实例链接可进行灾难恢复,在发生灾难时,可以手动将工作负荷从主数据库故障转移到辅助数据库。 若要开始使用,请查看通过托管实例链接进行灾难恢复

使用 SQL Server 2016 到 SQL Server 2019 时,主数据库始终是 SQL Server,故障转移到辅助 SQL 托管实例是单向的。 不支持故障回复到 SQL Server。 但是,可以使用 事务复制导出 bacpac 等数据移动选项将数据恢复到 SQL Server。

使用 SQL Server 2022 时,SQL Server 或 SQL 托管实例可以是主数据库,并且可以从 SQL Server 或 SQL 托管实例建立链接。 可以在主要数据库和辅助数据库之间故障回复工作负荷,从而实现真正的双向灾难恢复。

故障回复到 SQL Server 时,可以选择以下故障回复方式:

  • 直接使用托管实例链接进行联机故障回复。
  • 通过备份 SQL 托管实例中的数据库并将其还原到 SQL Server 2022 实例脱机进行故障回复。

显示灾难恢复方案的示意图。

使用 Azure 服务

通过链接功能和 SQL Server 数据来利用 Azure 服务,而无需迁移到云。 示例包括报告、分析、备份、机器学习和其他将数据发送到 Azure 的作业。

将工作负荷卸载到 Azure

你还可以使用链接功能将工作负荷卸载到 Azure。 例如,应用程序可以将 SQL Server 用于读/写工作负荷,同时将只读工作负荷卸载到全球任一 Azure 区域的 SQL 托管实例部署。 建立链接后,SQL Server 上的主数据库是可读/写的,而将数据复制到 Azure 中的 SQL 托管实例是只读可访问的。 这种安排允许在 SQL 托管实例上复制的数据库可用于读取横向扩展并将只读工作负荷卸载到 Azure 的各种方案。 SQL 托管实例还可以并行托管独立的读/写数据库,这也允许将复制的数据库复制到同一 SQL 托管实例上的另一个读/写数据库,以便进一步数据处理。

链接是数据库范围的(每个数据库一个链接),允许合并和拆分 Azure 中的工作负荷。 例如,可以将数据库从多个 SQL Server 实例复制到 Azure 中的单个 SQL 托管实例部署(合并),也可以通过数据库与托管实例之间的一对一关系将数据库将数据库从单个 SQL Server 实例复制到多个托管实例,再到任何 Azure 区域(拆分)。 后面的选项提供了一种高效的方法,允许你将工作负荷快速部署到更接近全球各地客户的位置,你可以将其用作只读副本。

迁移到 Azure

链接功能还有助于从 SQL Server 迁移到 SQL 托管实例,可实现:

  • 与目前可用的所有其他解决方案相比,性能最高、停机时间最短的迁移。
  • 到任何服务层级中的 SQL 托管实例的真正联机迁移。

由于链接功能可实现停机时间最短的迁移,因此,你可以在保持主要工作负荷联机的同时迁移到托管实例。 尽管目前可以使用其他解决方案实现联机迁移到 常规用途 服务层级,但链接功能是唯一允许真正联机迁移到 业务关键 服务层级的解决方案。 有关使用链接与日志重播服务进行迁移的深入迁移比较,请参阅比较托管实例链接与 LRS

在本地复制数据

使用 SQL Server 2022 时,可以建立从 SQL 托管实例到 SQL Server 的链接,从而解锁其他场景,例如在 Azure 外部创建准实时数据库副本、测试业务连续性计划、满足合规性要求等。

自动备份

配置与 Azure SQL 托管实例的链接后,无论 SQL 托管实例是否为主数据库,SQL 托管实例上的数据库都会自动备份到 Azure 存储。 包含链接的自动备份会进行完整备份和事务日志备份,但不会进行差异备份,这可能会导致还原时间更长。

你可以降低本地管理和操作成本,同时在已复制数据库上获得可靠的 Azure 备份功能。 然后,可以对已复制数据库执行到同一区域中任何 SQL 托管实例部署的时间点还原,就像执行任何其他自动备份一样。

无许可证被动 DR 副本

如果为没有任何工作负荷的仅辅助被动灾难恢复 SQL 托管实例激活混合故障转移权益,则可以节省 vCore 许可成本。

若要开始使用,请查看无需支付许可费用的被动副本

成本收益

如果指定一个托管实例副本仅用于灾难恢复,Azure 不会针对辅助实例使用的 vCore 向你收取 SQL Server 许可费用。 实例按小时粒度计费,如果在一小时内更新许可权益,则仍可能需要支付一小时许可费用。

权益在即用即付计费模型和 Azure 混合权益中运作的方式不同。 对于即用即付计费模型,在发票中 vCore 将获得计费折扣。 如果将 Azure 混合权益用于被动副本,则次要副本所使用的 vCore 数量将返回至许可池。

例如,作为即用即付客户,如果有 16 个 vCore 分配给辅助实例,那么当你将辅助实例指定用于混合故障转移时,发票中会显示对 16 个 vCore 的折扣。

在另一个示例中,如果你有 16 个 Azure 混合权益许可证,并且辅助 SQL 托管实例使用 8 个 vCore,则在将辅助实例指定用于混合故障转移后,8 个 vCore 将返回许可证池,以用于其他 Azure SQL 部署。

有关混合故障转移权益的精确条款和条件,请参阅联机 SQL Server 许可条款中的 SQL Server - 故障转移权限 部分。

限制

使用链接时,请考虑以下限制。

版本可支持性限制包括:

  • 无法使用 Windows 10 和 11 客户端来托管 SQL Server 实例,因为无法启用链接所需的 Always On 可用性组功能。 必须在 Windows Server 2012 或更高版本上托管 SQL Server 实例。
  • 此链接功能不支持 SQL Server 版本 2008 到 2014,因为这些版本的 SQL 引擎对链接所需的分布式可用性组没有内置支持。 升级到较新版本的 SQL Server 以使用链接功能。
  • 配置了 SQL Server 2022 更新策略的实例支持 SQL 托管实例到 SQL Server 2022 的数据复制和故障转移:
    • 建立从 SQL 托管实例到 SQL Server 的链接。
    • 从 SQL 托管实例故障转移到 SQL Server 2022。

数据复制限制包括:

  • 只能复制用户数据库。 不支持复制系统数据库。
  • 解决方案不会将服务器级对象、代理作业或用户登录名从 SQL Server 复制到 SQL 托管实例。
  • 对于 SQL Server 版本 2016、2017 和 2019,将用户数据库从 SQL Server 实例复制到 SQL 托管实例部署是一种方式。 无法通过链接将用户数据库从 SQL 托管实例部署复制回 SQL Server 实例。 故障回复到 SQL Server 实例的双向复制仅适用于 SQL Server 2022。
  • 对于已链接的 SQL 托管实例数据库,不支持配置从 SQL 托管实例到 SQL Server 的链接。

配置限制包括:

  • 如果服务器上有多个 SQL Server 实例,则可以为每个实例配置链接,但必须将每个实例配置为使用单独的数据库镜像终结点,每个实例都有专用端口。 只有默认实例应将端口 5022 用于数据库镜像终结点。
  • 对于一个托管实例链接,只能将一个数据库放入单个可用性组。 但是,可以通过建立多个链接,在单个 SQL Server 实例中复制多个数据库。
  • 可以使用单个数据库创建与现有可用性组的链接。 如果现有可用性组有多个数据库,则仅当从可用性组中删除除一个数据库以外的所有数据库时,才能创建与可用性组的链接。
  • 单个常规用途或业务关键 SQL 托管实例最多支持来自同一个或多个 SQL Server 源的 100 个链接。
  • 托管实例链接可以复制任何大小的数据库,前提是该数据库适合目标 SQL 托管实例部署的所选存储大小。
  • SQL Server 与 SQL 托管实例之间的托管实例链接身份验证基于证书,只能通过证书交换实现此目的。 无法使用 Windows 身份验证在 SQL Server 实例和 SQL 托管实例之间建立链接。
  • 您可以建立一个链接,其中仅将 VNet 本地终结点 链接到 SQL 托管实例。
  • 不能使用公共终结点或专用终结点建立与托管实例的链接。
  • 无法复制具有多个日志文件的数据库,因为 SQL 托管实例不支持多个日志文件。

功能限制包括:

  • 不能将 故障转移组 用于使用链接功能的实例。 不能在属于故障转移组的 SQL 托管实例上建立链接,相反,无法在已建立链接的实例上配置故障转移组。
  • 如果对 SQL Server 实例上复制的数据库使用变更数据捕获 (CDC)、日志传送或服务代理,当数据库迁移到 SQL 托管实例部署时以及在故障转移到 Azure 期间,客户端需要使用当前全局主要副本的实例名称进行连接。 需要手动重新配置这些设置。
  • 如果在具有已建立链接的数据库上使用 事务复制 ,请考虑以下事项:
    • 辅助副本上的链接数据库不能成为事务复制拓扑中的发布者。
    • 如果要使用链接迁移在事务复制拓扑中配置为发布服务器的数据库,则必须在迁移完成后将数据库重新配置为目标实例上的发布服务器。
  • 如果对从 SQL Server 实例复制的数据库使用分布式事务,并且执行的是迁移方案,则在切换到云时,将不会转移分布式事务处理协调器功能。 迁移的数据库无法参与 SQL Server 实例中的分布式事务,因为 SQL 托管实例部署目前不支持 SQL Server 中的分布式事务。 作为参考,SQL 托管实例目前仅支持其他托管实例之间的分布式事务。 有关详细信息,请参阅跨云数据库的分布式事务
  • 如果使用透明数据加密(TDE)来加密 SQL Server 数据库,则需要从 SQL Server 导出数据库加密密钥并将其上传到 Azure Key Vault,并且还需要在创建链接之前在 SQL 托管实例上配置 BYOK TDE 选项。
  • 无法将使用服务管理的 TDE 密钥加密的 SQL 托管实例数据库链接到 SQL Server。 仅当使用客户管理的密钥对其进行加密并且目标服务器有权访问用于加密数据库的同一密钥时,才能将加密数据库链接到 SQL Server。 有关详细信息,请参阅使用 Azure Key Vault 设置 SQL Server TDE
  • 如果 SQL Server 实例上使用的功能在 SQL 托管实例上不受支持,则无法在 SQL Server 与 SQL 托管实例之间建立链接。 例如:
    • 无法使用文件表和文件流复制数据库,因为 SQL 托管实例不支持文件表或文件流。
    • 可以将仅使用 In-Memory OLTP 的数据库复制到 业务关键 服务层级中的 SQL 托管实例,因为 一般用途 服务层不支持 In-Memory OLTP。 SQL 托管实例不支持具有多个 In-Memory OLTP 文件的数据库,并且无法复制它们。

尝试将不受支持的功能添加到以下产品的复制数据库:

  • SQL Server 2017、2019 和 2022 失败,并出现错误。
  • SQL Server 2016 会导致中断链接,然后需要删除并重新创建链接。

有关 SQL Server 和 SQL 托管实例之间差异的完整列表,请参阅 SQL Server 和 Azure SQL 托管实例之间的 T-SQL 差异

要使用该链接,请参阅以下内容:

要详细了解链接:

对于其他复制和迁移方案,请考虑: