

# Amazon RDS for Microsoft SQL Server 多可用区部署
<a name="USER_SQLServerMultiAZ"></a>

多可用区部署为数据库实例提供了更高的可用性、数据持久性和容错能力。在进行计划的数据维护或发生未计划的服务中断时，Amazon RDS 会自动故障转移到最新的辅助数据库实例。此功能让数据库操作快速恢复，而不需要手动干预。主实例和备用实例使用相同的终端节点，其物理网络地址作为故障转移过程的一部分转换到辅助副本。在故障转移时，您不必重新配置应用程序。

Amazon RDS 通过使用 SQL Server 数据库镜像（DBM）、Always On 可用性组（AG）或块级复制，支持为 Microsoft SQL Server 进行多可用区部署。Amazon RDS 监控并维护您的多可用区部署的运行状况。如果出现问题，RDS 会自动修复运行状况不佳的数据库实例，重新建立同步，并发起故障转移。仅当备用实例和主要实例完全同步时，才会发生故障转移。您不必管理任何内容。

当您设置 SQL Server 多可用区时，RDS 自动将实例上的所有数据库配置为使用 DBM、AG 或块级复制。当您配置 DBM 或 AG 时，Amazon RDS 负责处理主要、见证以及辅助数据库实例。对于块级复制，RDS 负责处理主要和辅助数据库实例。因为配置是自动的，所以 RDS 基于您部署的 SQL Server 版本选择 DBM 、Always On AG 或块级复制。

Amazon RDS 支持在以下 SQL Server 版本中使用带 Always On AG 的多可用区：
+ SQL Server 2022：
  + 标准版
  + Enterprise Edition
+ SQL Server 2019：
  + 标准版 15.00.4073.23 及更高版本
  + Enterprise Edition
+ SQL Server 2017：
  + 标准版 14.00.3401.7 及更高版本
  + 企业版 14.00.3049.1 及更高版本
+ SQL Server 2016：企业版 13.00.5216.0 及更高版本

Amazon RDS 支持以下 SQL Server 版本带 DBM 的多可用区，前面提到的版本除外：
+ SQL Server 2019：标准版 15.00.4043.16
+ SQL Server 2017：标准版和企业版
+ SQL Server 2016：标准版和企业版 

Amazon RDS 对于 SQL Server 2022 Web 版 16.00.4215.2 及更高版本支持具有块级复制功能的多可用区。

**注意**  
只有使用 16.00.4215.2 或更高版本创建的新数据库实例才支持具有块级复制功能的多可用区部署。以下限制适用于现有的 SQL Server 2022 Web 版实例：  
对于版本 16.00.4215.2 上的现有实例，您必须将快照还原到次要版本相同或更高的新实例，才能启用块级复制。
具有较旧次要版本的 SQL Server 2022 Web 实例可以升级到次要版本 16.00.4215.2 或更高版本，以启用块级复制。

您可以使用以下 SQL 查询来确定 SQL Server 数据库实例是单可用区、DBM 多可用区还是 Always On AG 多可用区。此查询不适用于 SQL Server Web 版上的多可用区部署。

```
SELECT CASE WHEN dm.mirroring_state_desc IS NOT NULL THEN 'Multi-AZ (Mirroring)'
    WHEN dhdrs.group_database_id IS NOT NULL THEN 'Multi-AZ (AlwaysOn)'
    ELSE 'Single-AZ'
    END 'high_availability'
FROM sys.databases sd
LEFT JOIN sys.database_mirroring dm ON sd.database_id = dm.database_id
LEFT JOIN sys.dm_hadr_database_replica_states dhdrs ON sd.database_id = dhdrs.database_id AND dhdrs.is_local = 1
WHERE DB_NAME(sd.database_id) = 'rdsadmin';
```

输出与以下内容类似：

```
high_availability
Multi-AZ (AlwaysOn)
```

## 向 Microsoft SQL Server 数据库实例添加多可用区
<a name="USER_SQLServerMultiAZ.Adding"></a>

当您使用 Amazon Web Services 管理控制台创建新的 SQL Server 数据库实例时，您可以添加带数据库镜像（DBM）、Always On AG 或块级复制的多可用区。您可以通过从**多可用区部署**中选择**是（镜像/Always On/块级复制）**来执行此操作。有关更多信息，请参阅 [创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)。

当使用控制台修改现有 SQL Server 数据库实例时，可以通过从**修改数据库实例**页面上的**多可用区部署**中选择**是（镜像/Always On/块级复制）**，以添加带 DBM、AG 或块级复制的多可用区。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

**注意**  
如果您的数据库实例运行的是数据库镜像 (DBM)（并非 Always On 可用性组 (AG)），则可能需要在添加多可用区之前禁用内存中优化。如果数据库实例运行 SQL Server 2016 或 2017 企业版并启用了内存优化，则在添加多可用区之前通过 DBM 禁用内存优化。  
如果您的数据库实例正在运行 SQL Server Web 版的 AG 或块级复制，则不需要此步骤。

## 从 Microsoft SQL Server 数据库实例删除多可用区
<a name="USER_SQLServerMultiAZ.Removing"></a>

当您使用 Amazon Web Services 管理控制台修改现有 SQL Server 数据库实例时，您可以移除带 DBM、AG 或块级复制的多可用区。您可以通过在**修改数据库实例**页面上的**多可用区部署**中选择**否（镜像/Always On/块级复制）**来实现上述目的。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。