使用 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 版本不受支持,则此选项在上下文菜单中不可用。

    显示数据库上下文菜单选项以创建新链接的屏幕截图。

  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 中的“对象资源管理器”查看复制的数据库是否处于“已同步”状态。

显示 SQL Server 数据库和 SSMS 中分布式可用性组状态的屏幕截图。

展开“Always On 高可用性”和“可用性组”,以查看为每个链接创建的分布式可用性组。

显示 SQL 托管实例数据库和分布式可用性组状态的屏幕截图。

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

疑难解答

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

错误

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

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

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

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

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