閱讀英文

共用方式為

链接故障转移 - Azure SQL 托管实例

适用于:Azure SQL 托管实例

本文介绍如何使用 SQL Server Management Studio (SSMS) 或 PowerShell 对 SQL Server 和 Azure SQL 托管实例之间链接的数据库进行故障转移,以便进行灾难恢复或迁移。

先决条件

若要通过链接将数据库故障转移到辅助副本,需要满足以下先决条件:

停止工作负载

如果已准备好将数据库故障转移到辅助副本,请先在维护时段停止主副本上的任何应用程序工作负载。 这样数据库同步复制才能跟上辅助副本,以便故障转移到辅助数据库,而不会丢失数据。 在故障转移之前,确保应用程序不会向主节点提交事务。

数据库故障转移

可以使用 Transact-SQL (T-SQL)、SQL Server Management Studio 或 PowerShell 对链接的数据库进行故障转移。

SQL Server 2022 CU13 (KB5036432) 开始,可以使用 Transact-SQL 将链接进行故障转移。

若要对链接执行计划的故障转移,请在主副本上使用以下 T-SQL 命令:

ALTER AVAILABILITY GROUP [<DAGname>] FAILOVER

若要执行强制故障转移操作,请在辅助副本上使用以下 T-SQL 命令:

ALTER AVAILABILITY GROUP [<DAGname>] FORCE_FAILOVER_ALLOW_DATA_LOSS

查看故障转移后的数据库

对于 SQL Server 2022,如果选择维持链接,则可以检查分布式可用性组是否存在于 SQL Server Management Studio 中对象资源管理器可用性组下。

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

故障转移后清理

除非选择了“故障转移成功后删除链接”,否则使用 SQL Server 2022 进行故障转移不会中断链接。 故障转移后,可以保持链接,确保可用性组和分布式可用性组保持活动状态。 无需执行其他操作。

删除链接只会删除分布式可用性组,并使可用性组保持活动状态。 可以决定保留可用性组,或将其删除。

如果决定删除可用性组,请替换以下值,然后运行示例 T-SQL 代码:

  • <AGName> 替换为 SQL Server 上可用性组的名称(用于创建链接)。
-- Run on SQL Server
USE MASTER
GO
DROP AVAILABILITY GROUP <AGName> 
GO

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

在强制故障转移后,你可能会遇到脑裂情况,即两个副本都担当主要角色,这导致链接处于不一致状态。 如果在灾难期间切换到次要副本,然后主要副本恢复联机,则可能会发生这种情况。

若要解决此问题,请参阅修复脑裂情况

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

要了解有关该链接的详细信息,请参阅以下内容:

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