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

使用 SSMS 配置链接 - Azure SQL 托管实例

适用于:Azure SQL 托管实例

本文介绍如何使用 SQL Server Management Studio (SSMS) 配置 SQL Server 和 Azure SQL 托管实例之间的链接。 通过该链接,初始主要副本中的数据库将近乎实时地复制到次要副本。

创建链接后,可以故障转移到次要副本以进行迁移或灾难恢复。

注意

  • 还可以使用脚本配置链接。
  • 目前只能在预览版中将 Azure SQL 托管实例配置为初始主要副本,并且仅从 SQL Server 2022 CU10 开始支持此功能。

概述

使用链接功能将初始主要副本中的数据库复制到次要副本。 对于 SQL Server 2022,初始主要副本可以是 SQL Server 或 Azure SQL 托管实例。 对于 SQL Server 2019 及更早版本,初始主要副本必须是 SQL Server。 配置链接后,将初始主要副本中的数据库复制到次要副本。

可以选择在主要副本和次要副本之间的混合环境中保留该链接的位置以便进行连续数据复制,也可以将数据库故障转移到次要副本、迁移到 Azure 或进行灾难恢复。 对于 SQL Server 2019 及更早版本,将故障转移到 Azure SQL 托管实例即可断开链接,不支持故障回复功能。 使用 SQL Server 2022 时,可以选择保留该链接并在两个副本之间进行故障回复 - 目前可在预览版中使用此功能。

如果计划仅使用辅助托管实例进行灾难恢复,可以通过激活混合故障转移权益来节省许可成本。

使用本文中的说明手动设置 SQL Server 与 Azure SQL 托管实例之间的链接。 创建链接后,会在目标次要副本上创建源数据库的只读副本。

先决条件

注意

链接的某些功能已正式发布,还有一些当前为预览版。 查看版本可支持性,了解详细信息。

若要通过链接将数据库复制到次要副本,需要满足以下先决条件:

考虑以下情况:

  • 链接功能支持每个链接有一个数据库。 若要从一个实例上复制多个数据库,请为每个单独的数据库创建一个链接。 例如,若要将 10 个数据库复制到 SQL 托管实例,请创建 10 个单独链接。
  • SQL Server 和 SQL 托管实例之间的排序规则应相同。 排序规则不匹配可能会导致服务器名称大小写不匹配,并阻止从 SQL Server 到 SQL 托管实例的成功连接。
  • SQL Server 初始主要副本上的错误 1475 指示需要通过在不使用 COPY ONLY 选项的情况下创建完整备份来启动新的备份链。

权限

对于SQL Server,应具有 sysadmin 权限。

对于 Azure SQL 托管实例,你应是 SQL 托管实例参与者的一位成员,或具有自定义角色的以下权限:

Microsoft.Sql/ 资源 必要的权限
Microsoft.Sql/managedInstances /read、/write
Microsoft.Sql/managedInstances/hybridCertificate /action
Microsoft.Sql/managedInstances/databases /read、/delete、/write、/completeRestore/action、/readBackups/action、/restoreDetails/read
Microsoft.Sql/managedInstances/distributedAvailabilityGroups /read、/write、/delete、/setRole/action
Microsoft.Sql/managedInstances/endpointCertificates /read
Microsoft.Sql/managedInstances/hybridLink /read、/write、/delete
Microsoft.Sql/managedInstances/serverTrustCertificates /write、/delete、/read

准备数据库

如果 SQL Server 是初始主要副本,则需要创建数据库的备份。 由于 Azure SQL 托管实例会自动执行备份,因此如果 SQL 托管实例是初始主要副本,请跳过此步骤。

在 SQL Server 上使用 SSMS 备份数据库。 执行以下步骤:

  1. 在 SQL Server Management Studio (SSMS) 中连接到 SQL Server。
  2. 在“对象资源管理器”中,右键单击数据库,将鼠标悬停在“任务”上方,然后选择“备份”
  3. 选择“完整”作为备份类型。
  4. 确保“备份到”选项具有指向有足够可用存储空间的磁盘的备份路径。
  5. 选择“确定”完成完整备份。

有关详细信息,请参阅创建完整数据库备份

注意

该链接仅支持复制用户数据库。 不支持复制系统数据库。 要复制实例级对象(存储在 mastermsdb 中),请编写 T-SQL 脚本,并在目标实例上运行这些脚本。

在以下步骤中,使用 SSMS 中的“新建托管实例链接”向导来创建初始主要副本和次要副本之间的链接。

创建链接后,会在目标次要副本上创建源数据库的只读副本。

  1. 打开 SSMS 并连接到初始主要副本。

  2. 在“对象资源管理器”中,右键单击你要链接到次要副本的数据库,将鼠标悬停在 Azure SQL 托管实例链接上,并选择“新建...”打开“新建托管实例链接”向导。 如果 SQL Server 版本不受支持,则此选项在上下文菜单中不可用。

    Screenshot that shows a database's context menu option to create a new link.

  3. 在向导的“简介”页上,选择“下一步”。

  4. 在“指定链接选项”页上,提供链接的名称 - 如果选择多个数据库,则数据库名称会自动追加到你所提供名称的末尾,这样就无需你自行输入该名称。 如果想要启用连接故障排除,并且对于 SQL Server 2022,如果计划将链接用于双向灾难恢复,请选中相应的方框。 选择下一步

  5. 在“要求”页上,向导将验证与次要副本建立链接所需满足的要求。 在验证所有要求后选择“下一步”,或解决未满足的任何要求,然后选择“重新运行验证”

  6. 在“选择数据库”页上,选择要通过链接复制到次要副本的数据库。 选择多个数据库时,会创建多个分布式可用性组,每个链接对应一个可用性组。 选择下一步

  7. 在“指定次要副本”页上,选择“添加次要副本”来添加你的次要副本。 如果初始主要副本是 SQL Server,则会打开“登录到 Azure”窗口。 如果初始主要副本是 SQL 托管实例,则会打开“连接到服务器”对话框。

    1. 对于 SQL Server 初始主要副本,请登录到 Azure,从下拉列表中选择订阅、资源组和辅助 SQL Server 托管实例。 选择“登录”以打开“连接到服务器”对话框,然后连接到要将数据库复制到的 SQL 托管实例。 “登录”窗口中显示“登录成功”时,选择“确定”关闭窗口,然后返回到“新建托管实例链接”向导。
    2. 对于 SQL 托管实例初始主要副本,请连接到要将数据库复制至的 SQL Server 实例。
  8. 添加次要副本后,请使用向导中的选项卡根据需要修改“终结点”设置,并查看有关备份和其余选项卡中的链接终结点的信息。 准备好继续操作时,选择“下一步”

  9. 如果 SQL 托管实例是初始主要副本,则向导中的下一页是“登录到 Azure”页。 如果需要,请再次登录,然后选择“下一步”。 当 SQL Server 是初始主要副本时,不显示此页。

  10. 在“验证”页上,确保所有验证均已成功。 如有验证失败,请予以解决,然后重新运行验证。 准备就绪后,选择“下一步”

  11. 在“摘要”页上,再次查看你的配置。 或者,选择“脚本”以生成脚本,以便将来可以轻松地重新创建同一链接。 准备好创建链接后,选择“完成”

  12. “正在执行的操作”页显示每项操作的进度。

  13. 完成所有步骤后,“结果”页会在已成功完成的操作旁边显示复选标记。 现在可以关闭窗口。

查看复制的数据库

创建链接后,数据库便会复制到次要副本。 根据数据库大小和网络速度,在次要副本上数据库最初可能处于“正在还原”状态。 完成初始种子设定后,数据库将还原到次要副本并随时可用于只读工作负载。

在任一副本上,使用 SSMS 中的“对象资源管理器”查看复制的数据库是否处于“已同步”状态。 展开“Always On 高可用性”和“可用性组”,以查看为每个链接创建的分布式可用性组。

Screenshot that shows the state of the SQL Server database and distributed availability group in S S M S.Screenshot that shows the state of the SQL Managed Instance database and distributed availability group.

无论哪个实例是主要副本,你还可以右键单击 SQL Server 上链接的分布式可用性组,然后选择“显示仪表板”以查看分布式可用性组的仪表板,仪表板会显示分布式可用性组中链接数据库的状态。

停止工作负载

若要将数据库迁移或故障转移到次要副本,请先在维护时段停止主要副本上的任何应用程序工作负载。 这使数据库复制能够赶上次要副本,让你能在不丢失数据的情况下故障转移或迁移到次要副本。 在进行故障转移之前,请确保应用程序不会向主要副本提交事务。

故障转移数据库

使用 SSMS 中的“SQL Server 和托管实例之间的故障转移”向导,将数据库从主要副本故障转移到次要副本。

可以从主要副本或次要副本执行计划的故障转移。 若要执行强制故障转移,请连接到次要副本。

注意

  • 在进行故障转移之前,请停止源数据库上的工作负载,使复制数据库能够完全赶上进度并完成故障转移,且不会丢失数据。 如果你正在执行强制故障转移,则可能会丢失数据。
  • 若在 SQL Server 2019 及更早版本中故障转移数据库,会断开并删除两个副本之间的链接。 无法故障回复到初始主要副本。
  • 目前可在预览版中故障转移数据库,同时保留与 SQL Server 2022 的链接。

若要故障转移数据库,请执行以下步骤:

  1. 打开 SSMS 并连接到任一副本。

  2. 在“对象资源管理器”中,右键单击复制的数据库,将鼠标悬停在“Azure SQL 托管实例链接”上,并选择“故障转移...”打开“SQL Server 和托管实例之间的故障转移”向导。 如果有来自同一数据库的多个链接,请在“对象资源管理器”中的“Always On 可用性组”下展开“可用性组”,然后右键单击要用于故障转移的链接所属的分布式可用性组。 选择“故障转移...”打开“SQL Server 和托管实例之间的故障转移”向导,以获取该特定链接。

    Screenshot that shows a database's context menu option for failover.

  3. 在“简介” 页上,选择“下一步”。

  4. “选择故障转移类型”页显示有关每个副本、所选数据库的角色以及支持的故障转移类型的详细信息。 可以从任何副本启动故障转移。 如果选择强制故障转移,则必须选中相应的方框,以表明你了解可能会出现数据丢失的情况。 选择下一步

  5. 在“登录到 Azure 和远程实例”页上,选择“登录”以提供凭据并登录到你的 Azure 帐户。 如果系统提示,请选择“登录”以登录到 SQL Server 或 SQL 托管实例次要副本。

  6. 在“故障转移后的操作”页上,SQL Server 2022 和早期版本之间的选项有所不同。

    1. 对于 SQL Server 2022,可以选择停止副本之间的复制操作,并在故障转移完成后删除链接和分布式可用性组。 如果要维护链接并继续执行副本之间的复制操作,请取消选中相应的方框。 如果选择删除链接,还可以选中相应的方框来删除可用性组(如果只是为了将数据库复制到 Azure 而创建,并且你不再需要该可用性组)。 选中适合你的场景的相应方框,然后选择“下一步”
    2. 对于 SQL Server 2019 及更早版本,默认情况下,“删除链接”的选项已选中,并且无法取消选中该选项,这是因为故障转移到 SQL 托管实例时会停止复制操作、断开连接并删除分布式可用性组。 选中此框以表明你了解链接将被删除,然后选择“下一步”
  7. 在“摘要”页上查看操作。 或者,选择“脚本”以生成脚本,以便将来可以轻松地使用同一链接对该数据库进行故障转移。 准备好对数据库进行故障转移时,选择“完成”

  8. 完成所有步骤后,“结果”页会在已成功完成的操作旁边显示复选标记。 现在可以关闭窗口。

如果选择为 SQL Server 2022 维护链接,则次要副本将变为新的主要副本,该链接仍然处于活动状态,你可以故障回复到次要副本。

如果使用的是 SQL Server 2019 及更早版本,或者选择为 SQL Server 2022 删除链接,则链接将被删除,故障转移完成后不会再存在。 每个副本上的源数据库和目标数据库都可以执行读/写工作负荷。 它们是完全独立的。

重要

成功故障转移到 SQL 托管实例后,手动将应用程序连接字符串重新指向 SQL 托管实例 FQDN,以完成迁移或故障转移过程,并继续在 Azure 中运行。

故障转移后查看数据库

对于 SQL Server 2022,如果选择维护链接,则可以在 SQL Server 或 SQL 托管实例上的“对象资源管理器”中检查数据库。 数据库的状态为“已同步”,“可用性组”下存在分布式可用性组。

如果在故障转移期间删除了链接,则可以使用“对象资源管理器”来确认分布式可用性组不再存在,但如果选择保留可用性组,数据库仍将处于“已同步”状态。

疑难解答

本部分提供有关解决配置和使用链接时所遇到问题的指南。

错误

如果在创建链接或故障转移数据库时遇到错误消息,选择该错误即可打开一个窗口,其中显示有关错误的其他详细信息。

如果在使用链接时遇到错误,SSMS 向导会在失败的步骤处停止执行,并且无法再次重新启动。 解决此问题,并且如有必要,清理环境以还原回原始状态,方法是删除分布式可用性组和可用性组(如果在设置链接已创建)。 然后再次启动向导以重新开始。

强制故障转移后的状态不一致

使用强制故障转移可能会导致主要副本和次要副本之间的状态不一致,从而导致两个副本处于同一角色时出现“脑裂”情况。 数据副本在此状态下失败,直到用户通过手动将一个副本指定为主要副本,将另一个副本指定为次要副本来解决这种情况。

有关链接功能的详细信息,请参阅以下资源: