

# SQL Server 升级的注意事项
<a name="USER_UpgradeDBInstance.SQLServer.Considerations"></a>

在升级流程期间，Amazon RDS 会创建两个数据库快照。第一个数据库快照是数据库实例在进行任何升级更改前的。第二个数据库快照是在升级结束后制作的。

**注意**  
如果您将数据库实例的备份保留期设置为大于 0 的数字，则 Amazon RDS 只需创建数据库快照。要更改您的备份保留期，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

升级完成后，您无法恢复为之前版本的数据库引擎。如果您想恢复到以前的版本，请从升级前创建的数据库快照还原以创建新的数据库实例。

在 SQL Server 的次要或主要版本升级期间，**Free Storage Space**和 **Disk Queue Depth** 指标将显示 `-1`。升级完毕后，这两个指标都将恢复正常。

在升级 SQL Server 实例之前，请查看以下信息。

**Topics**
+ [启动升级之前的最佳实践](#USER_UpgradeDBInstance.SQLServer.BestPractices)
+ [多可用区注意事项](#USER_UpgradeDBInstance.SQLServer.MAZ)
+ [只读副本注意事项](#USER_UpgradeDBInstance.SQLServer.readreplica)
+ [选项组注意事项](#USER_UpgradeDBInstance.SQLServer.OGPG.OG)
+ [参数组注意事项](#USER_UpgradeDBInstance.SQLServer.OGPG.PG)

## 启动升级之前的最佳实践
<a name="USER_UpgradeDBInstance.SQLServer.BestPractices"></a>

在开始升级过程之前，请实施以下准备步骤，以实现最佳的升级性能并最大限度地减少潜在问题：

时间和工作负载管理  
+ 安排在事务量较低的时段进行升级。
+ 在升级时段内尽量减少写入操作。
这样，Amazon RDS 就能够通过减少 RDS 在次要到主要配对期间需要还原的事务日志备份文件的数量，来更快地完成升级。

事务管理  
+ 确定并监控长时间运行的事务。
+ 在开始升级之前，确保所有关键事务都已提交。
+ 防止在升级时段内具有长时间运行的事务。

日志文件优化  
查看和优化事务日志文件：  
+ 缩小大小过大的日志文件。
+ 减少较高的日志消耗模式。
+ 管理虚拟日志文件（VLF）。
+ 为正常操作保留充足的可用空间。

## 多可用区注意事项
<a name="USER_UpgradeDBInstance.SQLServer.MAZ"></a>

Amazon RDS 通过使用 SQL Server 数据库镜像 (DBM) 或 Always On 可用性组 (AG) 支持为运行 Microsoft SQL Server 的数据库实例进行多可用区部署。有关更多信息，请参阅 [Amazon RDS for Microsoft SQL Server 多可用区部署](USER_SQLServerMultiAZ.md)。

在多可用区部署（Mirroring/AlwaysOn）中，当请求升级时，RDS 会对主实例和辅助实例采用滚动升级策略。滚动升级可确保在辅助实例升级期间至少有一个实例可用于事务。预计中断只会持续失效转移的这段期间。

在升级期间，RDS 会将辅助实例从多可用区配置中移除，对辅助实例执行升级，并还原在主实例断开连接期间从主实例获取的所有事务日志备份。还原所有日志备份后，RDS 会将升级后的辅助实例加入主实例。当所有数据库都处于同步状态时，RDS 会失效转移到已升级的辅助实例。失效转移完成后，RDS 将继续升级旧的主实例，还原所有事务日志备份，并使其与新的主实例配对。

为了尽量减少此失效转移持续时间，我们建议，当使用在连接字符串中支持 `MultiSubnetFailover` 连接选项的客户端库时，使用 AlwaysOn AG 可用性组侦听器端点。使用可用性组侦听器端点时，失效转移时间通常少于 10 秒，但是，此持续时间不包括任何额外的崩溃恢复时间。

## 只读副本注意事项
<a name="USER_UpgradeDBInstance.SQLServer.readreplica"></a>

在数据库版本升级期间，Amazon RDS 会升级所有只读副本以及主数据库实例。Amazon RDS 不支持单独对只读副本进行数据库版本升级。有关只读副本的更多信息，请参阅 [在 Amazon RDS 中使用 Microsoft SQL Server 的只读副本](SQLServer.ReadReplicas.md)。

当您执行主数据库实例的数据库版本升级时，该实例的所有只读副本也会自动升级。Amazon RDS 将在升级主数据库实例之前同时升级所有只读副本。在主数据库实例上的数据库版本升级完成之前，只读副本可能不可用。

## 选项组注意事项
<a name="USER_UpgradeDBInstance.SQLServer.OGPG.OG"></a>

如果数据库实例使用自定义数据库选项组，则在某些情况下，Amazon RDS 无法自动向数据库实例分配新的选项组。例如，在您升级到新的主要版本时，必须指定新的选项组。我们建议您创建新的选项组，然后向该组添加与现有自定义选项组相同的选项。

有关更多信息，请参阅 [创建选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 或 [复制选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy)。

## 参数组注意事项
<a name="USER_UpgradeDBInstance.SQLServer.OGPG.PG"></a>

如果您的数据库实例使用自定义数据库参数组：
+ Amazon RDS 在升级后自动重新启动数据库实例。
+ 在某些情况下，RDS 无法自动为您的数据库实例分配新参数组。

  例如，在升级到新的主要版本时，必须指定新参数组。我们建议您创建新参数组，然后配置您现有的自定义参数组中的那些参数。

有关更多信息，请参阅 [在 Amazon RDS 中创建数据库参数组](USER_WorkingWithParamGroups.Creating.md) 或 [在 Amazon RDS 中复制数据库参数组](USER_WorkingWithParamGroups.Copying.md)。