

# 使用 RDS Custom for SQL Server
<a name="working-with-custom-sqlserver"></a>

您可在以下内容中找到有关创建、管理和维护 RDS Custom for SQL Server 数据库实例的说明。

**Topics**
+ [RDS Custom for SQL Server 工作流](custom-sqlserver.workflow.md)
+ [Amazon RDS Custom for SQL Server 的要求和限制](custom-reqs-limits-MS.md)
+ [为 Amazon RDS Custom for SQL Server 设置环境](custom-setup-sqlserver.md)
+ [对于 RDS Custom for SQL Server 使用自带媒体](custom-sqlserver.byom.md)
+ [使用适用于 RDS Custom for SQL Server 的自定义引擎版本](custom-cev-sqlserver.md)
+ [为 Amazon RDS Custom for SQL Server 创建并连接到数据库实例](custom-creating-sqlserver.md)
+ [管理 Amazon RDS Custom for SQL Server 数据库实例](custom-managing-sqlserver.md)
+ [将 Microsoft Active Directory 用于 RDS Custom for SQL Server](custom-sqlserver-WinAuth.md)
+ [管理 RDS Custom for SQL Server 的多可用区部署](custom-sqlserver-multiaz.md)
+ [备份和还原 Amazon RDS Custom for SQL Server 数据库实例](custom-backup-sqlserver.md)
+ [复制 Amazon RDS Custom for SQL Server 数据库快照](custom-copying-snapshot-sqlserver.md)
+ [将本地数据库迁移到 Amazon RDS Custom for SQL Server](custom-migrating.md)
+ [RDS Custom for SQL Server 操作系统更新](custom-os-upgrade.md)
+ [升级 Amazon RDS Custom for SQL Server 数据库实例](custom-upgrading-sqlserver.md)
+ [针对 Amazon RDS Custom for SQL Server 排查数据库的问题](custom-troubleshooting-sqlserver.md)

# RDS Custom for SQL Server 工作流
<a name="custom-sqlserver.workflow"></a>

下图显示了 RDS Custom for SQL Server 的典型工作流。

![\[RDS Custom for SQL Server 架构\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/custom_sqlserver_architecture_v2.png)


步骤如下所示：

1. 从 RDS Custom 提供的引擎版本创建 RDS Custom for SQL Server 数据库实例。

   有关更多信息，请参阅 [创建 RDS Custom for SQL Server 数据库实例](custom-creating-sqlserver.md#custom-creating-sqlserver.create)。

1. 将应用程序连接到 RDS Custom 数据库实例端点。

   有关更多信息，请参阅[使用 AWS Systems Manager 连接到 RDS Custom 数据库实例](custom-creating-sqlserver.ssm.md)和[使用 RDP 连接到 RDS Custom 数据库实例](custom-creating-sqlserver.rdp.md)。

1. （可选）访问主机以自定义您的软件。

1. 监控 RDS Custom 自动化生成的通知和消息。

## 为 RDS Custom 创建数据库实例
<a name="custom-sqlserver.workflow.instance"></a>

您可以使用 `create-db-instance` 命令创建 RDS Custom 数据库实例。该过程与创建 Amazon RDS 实例类似。但是，有些参数是不同的。有关更多信息，请参阅 [为 Amazon RDS Custom for SQL Server 创建并连接到数据库实例](custom-creating-sqlserver.md)。

## 数据库连接
<a name="custom-sqlserver.workflow.db-connection"></a>

与 Amazon RDS 数据库实例一样，您的 RDS Custom for SQL Server 数据库实例驻留在 VPC 中。您的应用程序使用 SQL Server 管理套件（SSMS）等客户端连接到 RDS Custom 实例，就像在 RDS for SQL Server 中一样。

## RDS Custom 自定义
<a name="custom-sqlserver.workflow.customization"></a>

您可以访问 RDS Custom 主机来安装或自定义软件。为避免更改与 RDS Custom 自动化之间发生冲突，您可以在指定的时间内暂停自动化。在此期间，RDS Custom 不执行监控或实例恢复。在此时期结束时，RDS Custom 将恢复完全自动化。有关更多信息，请参阅 [暂停和恢复 RDS Custom 自动化](custom-managing-sqlserver.pausing.md)。

# Amazon RDS Custom for SQL Server 的要求和限制
<a name="custom-reqs-limits-MS"></a>

您可以在下面找到 Amazon RDS Custom for SQL Server 要求和限制的摘要以便快速参考。要求和限制也出现在相关章节中。

**Topics**
+ [区域和版本可用性](#custom-reqs-limits-MS.RegionVersionAvailability)
+ [RDS Custom for SQL Server 的一般要求](#custom-reqs-limits.reqsMS)
+ [RDS Custom for SQL Server 的数据库实例类支持](custom-reqs-limits.instancesMS.md)
+ [RDS Custom for SQL Server 的限制](#custom-reqs-limits.limitsMS)
+ [设置 RDS Custom for SQL Server 数据库实例的字符集和排序规则](custom-reqs-limits-MS.collation.md)
+ [RDS Custom for SQL Server 数据库实例的本地时区](custom-reqs-limits-MS.TimeZone.md)
+ [在 RDS Custom for SQL Server 中使用服务主密钥](custom-sqlserver-features.smk.md)
+ [RDS Custom for SQL Server 支持更改数据捕获（CDC）](custom-sqlserver-features.cdc.md)

## 区域和版本可用性
<a name="custom-reqs-limits-MS.RegionVersionAvailability"></a>

功能可用性和支持因每个数据库引擎的特定版本以及 AWS 区域而异。有关适用于 Amazon RDS Custom for SQL Server 的 Amazon RDS 的版本和区域可用性的更多信息，请参阅[支持 RDS Custom for SQL Server 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.sq)。

## RDS Custom for SQL Server 的一般要求
<a name="custom-reqs-limits.reqsMS"></a>

确保遵循 Amazon RDS Custom for SQL Server 的以下要求：
+ 使用 [RDS Custom for SQL Server 的数据库实例类支持](custom-reqs-limits.instancesMS.md) 中显示的实例类。唯一支持的存储类型是 gp2、gp3、io1 和 io2 Block Express 类型的固态硬盘（SSD）。io1、gp2 和 gp3 的最大存储限制为 16 TiB，而 io2 支持 64 TiB。
+ 确保您有创建 RDS Custom 数据库实例的对称 AWS KMS 密钥。有关更多信息，请参阅 [请确保您有对称的加密 AWS KMS 密钥](custom-setup-sqlserver.md#custom-setup-sqlserver.cmk)。
+ 确保创建 AWS Identity and Access Management (IAM) 角色和实例配置文件。有关更多信息，请参阅[手动创建您的 IAM 角色和实例配置文件](custom-setup-sqlserver.md#custom-setup-sqlserver.iam)和[使用 AWS 管理控制台自动创建实例配置文件](custom-setup-sqlserver.md#custom-setup-sqlserver.instanceProfileCreation)。
+ 确保提供 RDS Custom 可用于访问其他 AWS 服务的联网配置。有关特定要求，请参阅 [步骤 2：配置网络、实例配置文件和加密](custom-setup-sqlserver.md#custom-setup-sqlserver.iam-vpc)。
+ RDS Custom 和 Amazon RDS 数据库实例的总数不能超过您的配额限制。例如，如果您的配额为 40 个数据库实例，则可以有 20 个 RDS Custom for SQL Server 数据库实例和 20 个 Amazon RDS 数据库实例。
+ RDS Custom 会自动创建名称以 `do-not-delete-rds-custom-` 开头的 AWS CloudTrail 跟踪记录。RDS Custom 支持外围依赖于来自 CloudTrail 的事件来确定您的操作是否影响 RDS Custom 自动化。RDS Custom 会在您创建第一个数据库实例时创建跟踪记录。要使用已经存在的 CloudTrail，请联系AWS支持人员。有关更多信息，请参阅 [AWS CloudTrail](custom-concept.md#custom-concept.components.CloudTrail)。

# RDS Custom for SQL Server 的数据库实例类支持
<a name="custom-reqs-limits.instancesMS"></a>

使用 [describe-orderable-db-instance-options](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/describe-orderable-db-instance-options.html) 命令，检查您的区域中是否支持该数据库实例类。

RDS Custom for SQL Server 支持下表所示的数据库实例类：


| SQL Server 版本 | RDS Custom 支持 | 
| --- | --- | 
|  Enterprise Edition  |  db.r5.xlarge–db.r5.24xlarge db.r5b.xlarge–db.r5b.24xlarge db.m5.xlarge–db.m5.24xlarge db.r6i.xlarge–db.r6i.32xlarge db.m6i.xlarge–db.m6i.32xlarge db.x2iedn.xlarge–db.x2iedn.32xlarge  | 
|  标准版  |  db.r5.large–db.r5.24xlarge db.r5b.large–db.r5b.8xlarge db.m5.large–db.m5.24xlarge db.r6i.large–db.r6i.8xlarge db.m6i.large–db.m6i.8xlarge db.x2iedn.xlarge–db.x2iedn.8xlarge  | 
|  开发人员版本  |  db.r5.xlarge–db.r5.24xlarge db.r5b.xlarge–db.r5b.24xlarge db.m5.xlarge–db.m5.24xlarge db.r6i.xlarge–db.r6i.32xlarge db.m6i.xlarge–db.m6i.32xlarge db.x2iedn.xlarge–db.x2iedn.32xlarge  | 
|  Web 版  |  db.r5.large–db.r5.4xlarge db.m5.large–db.m5.4xlarge db.r6i.large–db.r6i.4xlarge db.m6i.large–db.m6i.4xlarge db.r5b.large–db.r5b.4xlarge  | 

以下建议适用于 db.x2iedn 类类型：
+ 创建时，本地存储是未分配的原始设备。在使用具有此实例类的数据库实例之前，必须挂载并格式化本地存储。之后，在其之上配置 `tempdb` 以确保最佳性能。有关更多信息，请参阅 [Optimize tempdb performance in Amazon RDS Custom for SQL Server using local instance storage](https://aws.amazon.com/blogs/database/optimize-tempdb-performance-in-amazon-rds-custom-for-sql-server-using-local-instance-storage/)。
+ 当您运行数据库实例操作 [例如扩展计算、实例更换、快照还原或时间点故障恢复（PITR）] 时，本地存储会恢复到其原始和未分配状态。在这些情况下，必须重新挂载、重新格式化和重新配置驱动器和 `tempdb` 来还原功能。
+ 对于多可用区实例，我们建议您在备用数据库实例上执行配置。这样，如果发生故障转移，系统可以继续运行而不会出现问题，因为配置已在备用实例上就位。

## RDS Custom for SQL Server 的限制
<a name="custom-reqs-limits.limitsMS"></a>

以下限制适用于 RDS Custom for SQL Server：
+ 您无法在 RDS Custom for SQL Server 的 Amazon RDS 数据库实例中创建只读副本。但是，您可以使用多可用区部署自动配置高可用性。有关更多信息，请参阅 [管理 RDS Custom for SQL Server 的多可用区部署](custom-sqlserver-multiaz.md)。
+ 您无法修改现有 RDS Custom for SQL Server 数据库实例的数据库实例标识符。
+ 对于不是使用自定义引擎版本（CEV）创建的 RDS Custom for SQL Server 数据库实例，不能保证保留对 Microsoft Windows 操作系统进行的更改。例如，当您启动快照或时间点还原操作时，将丢失这些更改。如果 RDS Custom for SQL Server 数据库实例是使用 CEV 创建的，则会保留这些更改。
+ 并非所有选项都受支持。例如，当您创建 RDS Custom for SQL Server 数据库实例时，您无法执行以下操作：
  + 更改数据库实例类中的 CPU 内核数和每个内核的线程数。
  + 启用存储弹性伸缩。
  + 指定自己的数据库参数组、选项组或字符集。
  + 开启性能详情或数据库洞察。
  + 开启自动次要版本升级。
+ 最大的数据库实例存储空间为 64TiB。
+ 您无法将 RDS 代理与 RDS Custom for SQL Server 一起使用。
+ 您无法将 `describe-reserved-db-instances` API 用于 RDS Custom for SQL Server 数据库实例。

# 设置 RDS Custom for SQL Server 数据库实例的字符集和排序规则
<a name="custom-reqs-limits-MS.collation"></a>

## 概述
<a name="custom-reqs-limits-MS.collation.overview"></a>

使用 RDS Custom for SQL Server 数据库实例，可以配置字符集和排序规则设置，来确定如何对数据进行存储和排序。字符集定义支持哪些字符，而排序规则指定用于对数据进行排序和比较的规则。为处理多语言数据或具有特定排序要求的应用程序设置适当的字符集和排序规则至关重要。例如，您可能需要处理重音字符并定义语言特定的排序规则，或者在不同区域设置之间保持数据完整性。以下各节提供有关 RDS Custom for SQL Server 数据库实例的字符集和排序规则支持的信息。

RDS Custom for SQL Server 支持各种服务器排序规则，包括传统编码和 UTF-8 编码，适用于 SQL\$1Latin、日语、德语和阿拉伯语区域设置。原定设置的服务器排序规则为 `SQL_Latin1_General_CP1_CI_AS`，但您可以选择其他支持的排序规则来使用。您可以使用与 RDS for SQL Server 所用的相同过程来选择排序规则。有关更多信息，请参阅 [管理 Amazon RDS for Microsoft SQL Server 的排序规则和字符集](Appendix.SQLServer.CommonDBATasks.Collation.md)。

## 注意事项
<a name="custom-reqs-limits-MS.collation.considerations"></a>

在 RDS Custom for SQL Server 上使用服务器排序规则时，以下要求和限制适用：
+ 您可以在创建 RDS Custom for SQL Server 数据库实例时设置服务器排序规则。创建数据库实例后，您无法修改服务器级别的排序规则。
+ 从数据库快照还原或时间点故障恢复（PITR）期间，您无法修改服务器级别的排序规则。
+ 当您从 RDS Custom for SQL Server CEV 创建数据库实例时，该数据库实例不会继承来自 CEV 的服务器排序规则。而是使用原定设置的服务器排序规则 `SQL_Latin1_General_CP1_CI_AS`。如果您已在 RDS Custom for SQL Server CEV 上配置了非原定设置服务器排序规则，并且想要在新数据库实例上使用相同的服务器排序规则，请务必在从 CEV 创建数据库实例时选择该相同的排序规则。
**注意**  
如果您在创建数据库实例时选择的排序规则与 CEV 的排序规则不同，则将重建新 RDS Custom for SQL Server 数据库实例上的 Microsoft SQL Server 系统数据库，以使用更新后的排序规则。重建过程仅在新的 RDS Custom for SQL Server 数据库实例上执行，对 CEV 本身没有影响。重建系统数据库后，您之前在 CEV 上对系统数据库所做的任何修改都不会保留在新的 RDS Custom for SQL Server 数据库实例上。一些修改的示例包括 `master` 数据库中的用户定义对象、`msdb` 数据库中的计划作业或对 CEV 上 `model` 数据库中原定设置数据库设置的更改。创建新的 RDS Custom for SQL Server 数据库实例后，您可以手动重新创建您的修改。
+ 当您从 RDS Custom for SQL Server 自定义引擎版本（CEV）创建数据库实例并选择与 CEV 所用不同的排序规则时，请确保用于创建 CEV 的黄金映像（AMI）满足以下要求，以便重建新数据库实例上的 Microsoft SQL Server 系统数据库：
  + 对于 SQL Server 2022，请确保 `setup.exe` 文件位于以下路径中：`C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\SQL2022\setup.exe`
  + 对于 SQL Server 2019，请确保 `setup.exe` 文件位于以下路径中：`C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\SQL2019\setup.exe`
  + `master`、`model` 和 `msdb` 数据库的数据和日志模板的副本必须存在于其原定设置位置。有关更多信息，请参阅 Microsoft 公共文档中的[重建系统数据库](https://learn.microsoft.com/en-us/sql/relational-databases/databases/rebuild-system-databases?view=sql-server-ver16#Restrictions         )。
  + 确保您的 SQL Server 数据库引擎使用 `NT Service\MSSQLSERVER ` 或 `NT AUTHORITY\NETWORK SERVICE` 作为服务账户。在为数据库实例配置非原定设置服务器排序规则时，任何其他账户对 `C:\` 驱动器都没有所需的权限。
+ 如果为新数据库实例选择的服务器排序规则与在 CEV 上配置的服务器排序规则相同，则新 RDS Custom for SQL Server 数据库实例上的 Microsoft SQL Server 系统数据库不会经历重建过程。您之前在 CEV 上对系统数据库所做的任何修改都将自动保留到新的 RDS Custom for SQL Server 数据库实例中。

## 支持的排序规则
<a name="custom-reqs-limits-MS.collation.supportedCollations"></a>

您可以将排序规则设置为下表中列出的值之一。


| 排序规则 | 说明 | 
| --- |--- |
| Arabic\$1100\$1BIN | Arabic-100，二进制排序 | 
| Arabic\$1100\$1BIN2 | Arabic-100，二进制代码点比较排序 | 
| Arabic\$1100\$1CI\$1AI | Arabic-100，不区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Arabic\$1100\$1CI\$1AI\$1KS | Arabic-100，不区分大小写，不区分重音，区分假名，不区分全半角 | 
| Arabic\$1100\$1CI\$1AI\$1KS\$1SC | Arabic-100，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符 | 
| Arabic\$1100\$1CI\$1AI\$1KS\$1SC\$1UTF8 | Arabic-100，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CI\$1AI\$1KS\$1WS | Arabic-100，不区分大小写，不区分重音，区分假名，区分全半角 | 
| Arabic\$1100\$1CI\$1AI\$1KS\$1WS\$1SC | Arabic-100，不区分大小写，不区分重音，区分假名，区分全半角，补充字符 | 
| Arabic\$1100\$1CI\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Arabic-100，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CI\$1AI\$1SC | Arabic-100，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符 | 
| Arabic\$1100\$1CI\$1AI\$1SC\$1UTF8 | Arabic-100，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CI\$1AI\$1WS | Arabic-100，不区分大小写，不区分重音，不区分假名，区分全半角 | 
| Arabic\$1100\$1CI\$1AI\$1WS\$1SC | Arabic-100，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符 | 
| Arabic\$1100\$1CI\$1AI\$1WS\$1SC\$1UTF8 | Arabic-100，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CI\$1AS | Arabic-100，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Arabic\$1100\$1CI\$1AS\$1KS | Arabic-100，不区分大小写，区分重音，区分假名，不区分全半角 | 
| Arabic\$1100\$1CI\$1AS\$1KS\$1SC | Arabic-100，不区分大小写，区分重音，区分假名，不区分全半角，补充字符 | 
| Arabic\$1100\$1CI\$1AS\$1KS\$1SC\$1UTF8 | Arabic-100，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CI\$1AS\$1KS\$1WS | Arabic-100，不区分大小写，区分重音，区分假名，区分全半角 | 
| Arabic\$1100\$1CI\$1AS\$1KS\$1WS\$1SC | Arabic-100，不区分大小写，区分重音，区分假名，区分全半角，补充字符 | 
| Arabic\$1100\$1CI\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Arabic-100，不区分大小写，区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CI\$1AS\$1SC | Arabic-100，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符 | 
| Arabic\$1100\$1CI\$1AS\$1SC\$1UTF8 | Arabic-100，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CI\$1AS\$1WS | Arabic-100，不区分大小写，区分重音，不区分假名，区分全半角 | 
| Arabic\$1100\$1CI\$1AS\$1WS\$1SC | Arabic-100，不区分大小写，区分重音，不区分假名，区分全半角，补充字符 | 
| Arabic\$1100\$1CI\$1AS\$1WS\$1SC\$1UTF8 | Arabic-100，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CS\$1AI | Arabic-100，区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Arabic\$1100\$1CS\$1AI\$1KS | Arabic-100，区分大小写，不区分重音，区分假名，不区分全半角 | 
| Arabic\$1100\$1CS\$1AI\$1KS\$1SC | Arabic-100，区分大小写，不区分重音，区分假名，不区分全半角，补充字符 | 
| Arabic\$1100\$1CS\$1AI\$1KS\$1SC\$1UTF8 | Arabic-100，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CS\$1AI\$1KS\$1WS | Arabic-100，区分大小写，不区分重音，区分假名，区分全半角 | 
| Arabic\$1100\$1CS\$1AI\$1KS\$1WS\$1SC | Arabic-100，区分大小写，不区分重音，区分假名，区分全半角，补充字符 | 
| Arabic\$1100\$1CS\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Arabic-100，区分大小写，不区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CS\$1AI\$1SC | Arabic-100，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符 | 
| Arabic\$1100\$1CS\$1AI\$1SC\$1UTF8 | Arabic-100，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CS\$1AI\$1WS | Arabic-100，区分大小写，不区分重音，不区分假名，区分全半角 | 
| Arabic\$1100\$1CS\$1AI\$1WS\$1SC | Arabic-100，区分大小写，不区分重音，不区分假名，区分全半角，补充字符 | 
| Arabic\$1100\$1CS\$1AI\$1WS\$1SC\$1UTF8 | Arabic-100，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CS\$1AS | Arabic-100，区分大小写，区分重音，不区分假名，不区分全半角 | 
| Arabic\$1100\$1CS\$1AS\$1KS | Arabic-100，区分大小写，区分重音，区分假名，不区分全半角 | 
| Arabic\$1100\$1CS\$1AS\$1KS\$1SC | Arabic-100，区分大小写，区分重音，区分假名，不区分全半角，补充字符 | 
| Arabic\$1100\$1CS\$1AS\$1KS\$1SC\$1UTF8 | Arabic-100，区分大小写，区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CS\$1AS\$1KS\$1WS | Arabic-100，区分大小写，区分重音，区分假名，区分全半角 | 
| Arabic\$1100\$1CS\$1AS\$1KS\$1WS\$1SC | Arabic-100，区分大小写，区分重音，区分假名，区分全半角，补充字符 | 
| Arabic\$1100\$1CS\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Arabic-100，区分大小写，区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CS\$1AS\$1SC | Arabic-100，区分大小写，区分重音，不区分假名，不区分全半角，补充字符 | 
| Arabic\$1100\$1CS\$1AS\$1SC\$1UTF8 | Arabic-100，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Arabic\$1100\$1CS\$1AS\$1WS | Arabic-100，区分大小写，区分重音，不区分假名，区分全半角 | 
| Arabic\$1100\$1CS\$1AS\$1WS\$1SC | Arabic-100，区分大小写，区分重音，不区分假名，区分全半角，补充字符 | 
| Arabic\$1100\$1CS\$1AS\$1WS\$1SC\$1UTF8 | Arabic-100，区分大小写，区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Arabic\$1BIN | Arabic，二进制排序 | 
| Arabic\$1BIN2 | Arabic，二进制代码点比较排序 | 
| Arabic\$1CI\$1AI | Arabic，不区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Arabic\$1CI\$1AI\$1KS | Arabic，不区分大小写，不区分重音，区分假名，不区分全半角 | 
| Arabic\$1CI\$1AI\$1KS\$1WS | Arabic，不区分大小写，不区分重音，区分假名，区分全半角 | 
| Arabic\$1CI\$1AI\$1WS | Arabic，不区分大小写，不区分重音，不区分假名，区分全半角 | 
| Arabic\$1CI\$1AS | Arabic，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Arabic\$1CI\$1AS\$1KS | Arabic，不区分大小写，区分重音，区分假名，不区分全半角 | 
| Arabic\$1CI\$1AS\$1KS\$1WS | Arabic，不区分大小写，区分重音，区分假名，区分全半角 | 
| Arabic\$1CI\$1AS\$1WS | Arabic，不区分大小写，区分重音，不区分假名，区分全半角 | 
| Arabic\$1CS\$1AI | Arabic，区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Arabic\$1CS\$1AI\$1KS | Arabic，区分大小写，不区分重音，区分假名，不区分全半角 | 
| Arabic\$1CS\$1AI\$1KS\$1WS | Arabic，区分大小写，不区分重音，区分假名，区分全半角 | 
| Arabic\$1CS\$1AI\$1WS | Arabic，区分大小写，不区分重音，不区分假名，区分全半角 | 
| Arabic\$1CS\$1AS | Arabic，区分大小写，区分重音，不区分假名，不区分全半角 | 
| Arabic\$1CS\$1AS\$1KS | Arabic，区分大小写，区分重音，区分假名，不区分全半角 | 
| Arabic\$1CS\$1AS\$1KS\$1WS | Arabic，区分大小写，区分重音，区分假名，区分全半角 | 
| Arabic\$1CS\$1AS\$1WS | Arabic，区分大小写，区分重音，不区分假名，区分全半角 | 
| Chinese\$1PRC\$1BIN2 | Chinese-PRC，二进制代码点比较排序 | 
| Chinese\$1PRC\$1CI\$1AS | Chinese-PRC，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Chinese\$1Taiwan\$1Stroke\$1CI\$1AS | Chinese-Taiwan-Stroke，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Danish\$1Norwegian\$1CI\$1AS | Danish-Norwegian，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Finnish\$1Swedish\$1CI\$1AS | Finnish-Swedish，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| French\$1CI\$1AS | French，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| German\$1PhoneBook\$1100\$1BIN | German-PhoneBook-100，二进制排序 | 
| German\$1PhoneBook\$1100\$1BIN2 | German-PhoneBook-100，二进制代码点比较排序 | 
| German\$1PhoneBook\$1100\$1CI\$1AI | German-PhoneBook-100，不区分大小写，不区分重音，不区分假名，不区分全半角 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS | German-PhoneBook-100，不区分大小写，不区分重音，区分假名，不区分全半角 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS\$1SC | German-PhoneBook-100，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS\$1SC\$1UTF8 | German-PhoneBook-100，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS\$1WS | German-PhoneBook-100，不区分大小写，不区分重音，区分假名，区分全半角 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS\$1WS\$1SC | German-PhoneBook-100，不区分大小写，不区分重音，区分假名，区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS\$1WS\$1SC\$1UTF8 | German-PhoneBook-100，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1SC | German-PhoneBook-100，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1SC\$1UTF8 | German-PhoneBook-100，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1WS | German-PhoneBook-100，不区分大小写，不区分重音，不区分假名，区分全半角 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1WS\$1SC | German-PhoneBook-100，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1WS\$1SC\$1UTF8 | German-PhoneBook-100，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AS | German-PhoneBook-100，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS | German-PhoneBook-100，不区分大小写，区分重音，区分假名，不区分全半角 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS\$1SC | German-PhoneBook-100，不区分大小写，区分重音，区分假名，不区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS\$1SC\$1UTF8 | German-PhoneBook-100，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS\$1WS | German-PhoneBook-100，不区分大小写，区分重音，区分假名，区分全半角 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS\$1WS\$1SC | German-PhoneBook-100，不区分大小写，区分重音，区分假名，区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS\$1WS\$1SC\$1UTF8 | German-PhoneBook-100，不区分大小写，区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1SC | German-PhoneBook-100，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1SC\$1UTF8 | German-PhoneBook-100，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1WS | German-PhoneBook-100，不区分大小写，区分重音，不区分假名，区分全半角 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1WS\$1SC | German-PhoneBook-100，不区分大小写，区分重音，不区分假名，区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1WS\$1SC\$1UTF8 | German-PhoneBook-100，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AI | German-PhoneBook-100，区分大小写，不区分重音，不区分假名，不区分全半角 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS | German-PhoneBook-100，区分大小写，不区分重音，区分假名，不区分全半角 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS\$1SC | German-PhoneBook-100，区分大小写，不区分重音，区分假名，不区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS\$1SC\$1UTF8 | German-PhoneBook-100，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS\$1WS | German-PhoneBook-100，区分大小写，不区分重音，区分假名，区分全半角 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS\$1WS\$1SC | German-PhoneBook-100，区分大小写，不区分重音，区分假名，区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS\$1WS\$1SC\$1UTF8 | German-PhoneBook-100，区分大小写，不区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1SC | German-PhoneBook-100，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1SC\$1UTF8 | German-PhoneBook-100，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1WS | German-PhoneBook-100，区分大小写，不区分重音，不区分假名，区分全半角 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1WS\$1SC | German-PhoneBook-100，区分大小写，不区分重音，不区分假名，区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1WS\$1SC\$1UTF8 | German-PhoneBook-100，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AS | German-PhoneBook-100，区分大小写，区分重音，不区分假名，不区分全半角 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS | German-PhoneBook-100，区分大小写，区分重音，区分假名，不区分全半角 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS\$1SC | German-PhoneBook-100，区分大小写，区分重音，区分假名，不区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS\$1SC\$1UTF8 | German-PhoneBook-100，区分大小写，区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS\$1WS | German-PhoneBook-100，区分大小写，区分重音，区分假名，区分全半角 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS\$1WS\$1SC | German-PhoneBook-100，区分大小写，区分重音，区分假名，区分全半角，补充字符 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS\$1WS\$1SC\$1UTF8 | German-PhoneBook-100，区分大小写，区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| German\$1PhoneBook\$1BIN | German-PhoneBook，二进制排序 | 
| German\$1PhoneBook\$1BIN2 | German-PhoneBook，二进制代码点比较排序 | 
| German\$1PhoneBook\$1CI\$1AI | German-PhoneBook，不区分大小写，不区分重音，不区分假名，不区分全半角 | 
| German\$1PhoneBook\$1CI\$1AI\$1KS | German-PhoneBook，不区分大小写，不区分重音，区分假名，不区分全半角 | 
| German\$1PhoneBook\$1CI\$1AI\$1KS\$1WS | German-PhoneBook，不区分大小写，不区分重音，区分假名，区分全半角 | 
| German\$1PhoneBook\$1CI\$1AI\$1WS | German-PhoneBook，不区分大小写，不区分重音，不区分假名，区分全半角 | 
| German\$1PhoneBook\$1CI\$1AS | German-PhoneBook，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| German\$1PhoneBook\$1CI\$1AS\$1KS | German-PhoneBook，不区分大小写，区分重音，区分假名，不区分全半角 | 
| German\$1PhoneBook\$1CI\$1AS\$1KS\$1WS | German-PhoneBook，不区分大小写，区分重音，区分假名，区分全半角 | 
| German\$1PhoneBook\$1CI\$1AS\$1WS | German-PhoneBook，不区分大小写，区分重音，不区分假名，区分全半角 | 
| German\$1PhoneBook\$1CS\$1AI | German-PhoneBook，区分大小写，不区分重音，不区分假名，不区分全半角 | 
| German\$1PhoneBook\$1CS\$1AI\$1KS | German-PhoneBook，区分大小写，不区分重音，区分假名，不区分全半角 | 
| German\$1PhoneBook\$1CS\$1AI\$1KS\$1WS | German-PhoneBook，区分大小写，不区分重音，区分假名，区分全半角 | 
| German\$1PhoneBook\$1CS\$1AI\$1WS | German-PhoneBook，区分大小写，不区分重音，不区分假名，区分全半角 | 
| German\$1PhoneBook\$1CS\$1AS | German-PhoneBook，区分大小写，区分重音，不区分假名，不区分全半角 | 
| German\$1PhoneBook\$1CS\$1AS\$1KS | German-PhoneBook，区分大小写，区分重音，区分假名，不区分全半角 | 
| German\$1PhoneBook\$1CS\$1AS\$1KS\$1WS | German-PhoneBook，区分大小写，区分重音，区分假名，区分全半角 | 
| German\$1PhoneBook\$1CS\$1AS\$1WS | German-PhoneBook，区分大小写，区分重音，不区分假名，区分全半角 | 
| Hebrew\$1BIN | Hebrew，二进制排序 | 
| Hebrew\$1CI\$1AS | Hebrew，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$190\$1BIN | Japanese-90，二进制排序 | 
| Japanese\$190\$1BIN2 | Japanese-90，二进制代码点比较排序 | 
| Japanese\$190\$1CI\$1AI | Japanese-90，不区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Japanese\$190\$1CI\$1AI\$1KS | Japanese-90，不区分大小写，不区分重音，区分假名，不区分全半角 | 
| Japanese\$190\$1CI\$1AI\$1KS\$1SC | Japanese-90，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$190\$1CI\$1AI\$1KS\$1SC\$1UTF8 | Japanese-90，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CI\$1AI\$1KS\$1WS | Japanese-90，不区分大小写，不区分重音，区分假名，区分全半角 | 
| Japanese\$190\$1CI\$1AI\$1KS\$1WS\$1SC | Japanese-90，不区分大小写，不区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$190\$1CI\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-90，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CI\$1AI\$1SC | Japanese-90，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$190\$1CI\$1AI\$1SC\$1UTF8 | Japanese-90，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CI\$1AI\$1WS | Japanese-90，不区分大小写，不区分重音，不区分假名，区分全半角 | 
| Japanese\$190\$1CI\$1AI\$1WS\$1SC | Japanese-90，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$190\$1CI\$1AI\$1WS\$1SC\$1UTF8 | Japanese-90，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CI\$1AS | Japanese-90，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$190\$1CI\$1AS\$1KS | Japanese-90，不区分大小写，区分重音，区分假名，不区分全半角 | 
| Japanese\$190\$1CI\$1AS\$1KS\$1SC | Japanese-90，不区分大小写，区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$190\$1CI\$1AS\$1KS\$1SC\$1UTF8 | Japanese-90，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CI\$1AS\$1KS\$1WS | Japanese-90，不区分大小写，区分重音，区分假名，区分全半角 | 
| Japanese\$190\$1CI\$1AS\$1KS\$1WS\$1SC | Japanese-90，不区分大小写，区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$190\$1CI\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-90，不区分大小写，区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CI\$1AS\$1SC | Japanese-90，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$190\$1CI\$1AS\$1SC\$1UTF8 | Japanese-90，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CI\$1AS\$1WS | Japanese-90，不区分大小写，区分重音，不区分假名，区分全半角 | 
| Japanese\$190\$1CI\$1AS\$1WS\$1SC | Japanese-90，不区分大小写，区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$190\$1CI\$1AS\$1WS\$1SC\$1UTF8 | Japanese-90，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CS\$1AI | Japanese-90，区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Japanese\$190\$1CS\$1AI\$1KS | Japanese-90，区分大小写，不区分重音，区分假名，不区分全半角 | 
| Japanese\$190\$1CS\$1AI\$1KS\$1SC | Japanese-90，区分大小写，不区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$190\$1CS\$1AI\$1KS\$1SC\$1UTF8 | Japanese-90，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CS\$1AI\$1KS\$1WS | Japanese-90，区分大小写，不区分重音，区分假名，区分全半角 | 
| Japanese\$190\$1CS\$1AI\$1KS\$1WS\$1SC | Japanese-90，区分大小写，不区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$190\$1CS\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-90，区分大小写，不区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CS\$1AI\$1SC | Japanese-90，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$190\$1CS\$1AI\$1SC\$1UTF8 | Japanese-90，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CS\$1AI\$1WS | Japanese-90，区分大小写，不区分重音，不区分假名，区分全半角 | 
| Japanese\$190\$1CS\$1AI\$1WS\$1SC | Japanese-90，区分大小写，不区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$190\$1CS\$1AI\$1WS\$1SC\$1UTF8 | Japanese-90，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CS\$1AS | Japanese-90，区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$190\$1CS\$1AS\$1KS | Japanese-90，区分大小写，区分重音，区分假名，不区分全半角 | 
| Japanese\$190\$1CS\$1AS\$1KS\$1SC | Japanese-90，区分大小写，区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$190\$1CS\$1AS\$1KS\$1SC\$1UTF8 | Japanese-90，区分大小写，区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CS\$1AS\$1KS\$1WS | Japanese-90，区分大小写，区分重音，区分假名，区分全半角 | 
| Japanese\$190\$1CS\$1AS\$1KS\$1WS\$1SC | Japanese-90，区分大小写，区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$190\$1CS\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-90，区分大小写，区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CS\$1AS\$1SC | Japanese-90，区分大小写，区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$190\$1CS\$1AS\$1SC\$1UTF8 | Japanese-90，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$190\$1CS\$1AS\$1WS | Japanese-90，区分大小写，区分重音，不区分假名，区分全半角 | 
| Japanese\$190\$1CS\$1AS\$1WS\$1SC | Japanese-90，区分大小写，区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$190\$1CS\$1AS\$1WS\$1SC\$1UTF8 | Japanese-90，区分大小写，区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1BIN | Japanese，二进制排序 | 
| Japanese\$1BIN2 | Japanese，二进制代码点比较排序 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1BIN | Japanese-Bushu-Kakusu-100，二进制排序 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1BIN2 | Japanese-Bushu-Kakusu-100，二进制代码点比较排序 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，区分假名，不区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS\$1SC | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS\$1WS | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，区分假名，区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS\$1WS\$1SC | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1SC | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1WS | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，不区分假名，区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1WS\$1SC | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，区分假名，不区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS\$1SC | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS\$1WS | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，区分假名，区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS\$1WS\$1SC | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1SC | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1WS | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，不区分假名，区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1WS\$1SC | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，区分假名，不区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS\$1SC | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS\$1WS | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，区分假名，区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS\$1WS\$1SC | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1SC | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1WS | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，不区分假名，区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1WS\$1SC | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，区分假名，不区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS\$1SC | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS\$1WS | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，区分假名，区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS\$1WS\$1SC | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1SC | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1WS | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，不区分假名，区分全半角 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1WS\$1SC | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100，区分大小写，区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1BIN | Japanese-Bushu-Kakusu-140，二进制排序 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1BIN2 | Japanese-Bushu-Kakusu-140，二进制代码点比较排序 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1VSS | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1WS | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1VSS | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1WS | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1WS\$1VSS | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1VSS | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1WS | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1VSS | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1WS | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1VSS | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1WS | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kaku su-140，区分大小写，不区分重音，区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1VSS | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1WS | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1WS\$1VSS | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1VSS | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1WS | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1VSS | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1WS | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，不区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140，区分大小写，区分重音，不区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1CI\$1AI | Japanese，不区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Japanese\$1CI\$1AI\$1KS | Japanese，不区分大小写，不区分重音，区分假名，不区分全半角 | 
| Japanese\$1CI\$1AI\$1KS\$1WS | Japanese，不区分大小写，不区分重音，区分假名，区分全半角 | 
| Japanese\$1CI\$1AI\$1WS | Japanese，不区分大小写，不区分重音，不区分假名，区分全半角 | 
| Japanese\$1CI\$1AS | Japanese，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$1CI\$1AS\$1KS | Japanese，不区分大小写，区分重音，区分假名，不区分全半角 | 
| Japanese\$1CI\$1AS\$1KS\$1WS | Japanese，不区分大小写，区分重音，区分假名，区分全半角 | 
| Japanese\$1CI\$1AS\$1WS | Japanese，不区分大小写，区分重音，不区分假名，区分全半角 | 
| Japanese\$1CS\$1AI | Japanese，区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Japanese\$1CS\$1AI\$1KS | Japanese，区分大小写，不区分重音，区分假名，不区分全半角 | 
| Japanese\$1CS\$1AI\$1KS\$1WS | Japanese，区分大小写，不区分重音，区分假名，区分全半角 | 
| Japanese\$1CS\$1AI\$1WS | Japanese，区分大小写，不区分重音，不区分假名，区分全半角 | 
| Japanese\$1CS\$1AS | Japanese，区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$1CS\$1AS\$1KS | Japanese，区分大小写，区分重音，区分假名，不区分全半角 | 
| Japanese\$1CS\$1AS\$1KS\$1WS | Japanese，区分大小写，区分重音，区分假名，区分全半角 | 
| Japanese\$1CS\$1AS\$1WS | Japanese，区分大小写，区分重音，不区分假名，区分全半角 | 
| Japanese\$1Unicode\$1BIN | Japanese-Unicode，二进制排序 | 
| Japanese\$1Unicode\$1BIN2 | Japanese-Unicode，二进制代码点比较排序 | 
| Japanese\$1Unicode\$1CI\$1AI | Japanese-Unicode，不区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Japanese\$1Unicode\$1CI\$1AI\$1KS | Japanese-Unicode，不区分大小写，不区分重音，区分假名，不区分全半角 | 
| Japanese\$1Unicode\$1CI\$1AI\$1KS\$1WS | Japanese-Unicode，不区分大小写，不区分重音，区分假名，区分全半角 | 
| Japanese\$1Unicode\$1CI\$1AI\$1WS | Japanese-Unicode，不区分大小写，不区分重音，不区分假名，区分全半角 | 
| Japanese\$1Unicode\$1CI\$1AS | Japanese-Unicode，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$1Unicode\$1CI\$1AS\$1KS | Japanese-Unicode，不区分大小写，区分重音，区分假名，不区分全半角 | 
| Japanese\$1Unicode\$1CI\$1AS\$1KS\$1WS | Japanese-Unicode，不区分大小写，区分重音，区分假名，区分全半角 | 
| Japanese\$1Unicode\$1CI\$1AS\$1WS | Japanese-Unicode，不区分大小写，区分重音，不区分假名，区分全半角 | 
| Japanese\$1Unicode\$1CS\$1AI | Japanese-Unicode，区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Japanese\$1Unicode\$1CS\$1AI\$1KS | Japanese-Unicode，区分大小写，不区分重音，区分假名，不区分全半角 | 
| Japanese\$1Unicode\$1CS\$1AI\$1KS\$1WS | Japanese-Unicode，区分大小写，不区分重音，区分假名，区分全半角 | 
| Japanese\$1Unicode\$1CS\$1AI\$1WS | Japanese-Unicode，区分大小写，不区分重音，不区分假名，区分全半角 | 
| Japanese\$1Unicode\$1CS\$1AS | Japanese-Unicode，区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$1Unicode\$1CS\$1AS\$1KS | Japanese-Unicode，区分大小写，区分重音，区分假名，不区分全半角 | 
| Japanese\$1Unicode\$1CS\$1AS\$1KS\$1WS | Japanese-Unicode，区分大小写，区分重音，区分假名，区分全半角 | 
| Japanese\$1Unicode\$1CS\$1AS\$1WS | Japanese-Unicode，区分大小写，区分重音，不区分假名，区分全半角 | 
| Japanese\$1XJIS\$1100\$1BIN | Japanese-XJIS-100，二进制排序 | 
| Japanese\$1XJIS\$1100\$1BIN2 | Japanese-XJIS-100，二进制代码点比较排序 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI | Japanese-XJIS-100，不区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS | Japanese-XJIS-100，不区分大小写，不区分重音，区分假名，不区分全半角 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS\$1SC | Japanese-XJIS-100，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS\$1SC\$1UTF8 | Japanese-XJIS-100，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS\$1WS | Japanese-XJIS-100，不区分大小写，不区分重音，区分假名，区分全半角 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS\$1WS\$1SC | Japanese-XJIS-100，不区分大小写，不区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1SC | Japanese-XJIS-100，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1SC\$1UTF8 | Japanese-XJIS-100，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1WS | Japanese-XJIS-100，不区分大小写，不区分重音，不区分假名，区分全半角 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1WS\$1SC | Japanese-XJIS-100，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS | Japanese-XJIS-100，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS | Japanese-XJIS-100，不区分大小写，区分重音，区分假名，不区分全半角 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS\$1SC | Japanese-XJIS-100，不区分大小写，区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS\$1SC\$1UTF8 | Japanese-XJIS-100，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS\$1WS | Japanese-XJIS-100，不区分大小写，区分重音，区分假名，区分全半角 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS\$1WS\$1SC | Japanese-XJIS-100，不区分大小写，区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100，不区分大小写，区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1SC | Japanese-XJIS-100，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1SC\$1UTF8 | Japanese-XJIS-100，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1WS | Japanese-XJIS-100，不区分大小写，区分重音，不区分假名，区分全半角 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1WS\$1SC | Japanese-XJIS-100，不区分大小写，区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI | Japanese-XJIS-100，区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS | Japanese-XJIS-100，区分大小写，不区分重音，区分假名，不区分全半角 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS\$1SC | Japanese-XJIS-100，区分大小写，不区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS\$1SC\$1UTF8 | Japanese-XJIS-100，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS\$1WS | Japanese-XJIS-100，区分大小写，不区分重音，区分假名，区分全半角 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS\$1WS\$1SC | Japanese-XJIS-100，区分大小写，不区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100，区分大小写，不区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1SC | Japanese-XJIS-100，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1SC\$1UTF8 | Japanese-XJIS-100，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1WS | Japanese-XJIS-100，区分大小写，不区分重音，不区分假名，区分全半角 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1WS\$1SC | Japanese-XJIS-100，区分大小写，不区分重音，不区分假名，区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS | Japanese-XJIS-100，区分大小写，区分重音，不区分假名，不区分全半角 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS | Japanese-XJIS-100，区分大小写，区分重音，区分假名，不区分全半角 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS\$1SC | Japanese-XJIS-100，区分大小写，区分重音，区分假名，不区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS\$1SC\$1UTF8 | Japanese-XJIS-100，区分大小写，区分重音，区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS\$1WS | Japanese-XJIS-100，区分大小写，区分重音，区分假名，区分全半角 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS\$1WS\$1SC | Japanese-XJIS-100，区分大小写，区分重音，区分假名，区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100，区分大小写，区分重音，区分假名，区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1SC | Japanese-XJIS-100，区分大小写，区分重音，不区分假名，不区分全半角，补充字符 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1SC\$1UTF8 | Japanese-XJIS-100，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1WS | Japanese-XJIS-100，区分大小写，区分重音，不区分假名，区分全半角 | 
| Japanese\$1XJIS\$1140\$1BIN | Japanese-XJIS-140，二进制排序 | 
| Japanese\$1XJIS\$1140\$1BIN2 | Japanese-XJIS-140，二进制代码点比较排序 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI | Japanese-XJIS-140，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS | Japanese-XJIS-140，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1UTF8 | Japanese-XJIS-140，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1VSS | Japanese-XJIS-140，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1VSS\$1UTF8 | Japanese-XJIS-140，不区分大小写，不区分重音，区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1WS | Japanese-XJIS-140，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1WS\$1UTF8 | Japanese-XJIS-140，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1WS\$1VSS | Japanese-XJIS-140，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140，不区分大小写，不区分重音，区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1UTF8 | Japanese-XJIS-140，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1VSS | Japanese-XJIS-140，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1VSS\$1UTF8 | Japanese-XJIS-140，不区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1WS | Japanese-XJIS-140，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1WS\$1UTF8 | Japanese-XJIS-140，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1WS\$1VSS | Japanese-XJIS-140，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140，不区分大小写，不区分重音，不区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS | Japanese-XJIS-140，不区分大小写，区分重音，不区分假名类型，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS | Japanese-XJIS-140，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1UTF8 | Japanese-XJIS-140，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1VSS | Japanese-XJIS-140，不区分大小写，区分重音，区分假名类型，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1VSS\$1UTF8 | Japanese-XJIS-140，不区分大小写，区分重音，区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1WS | Japanese-XJIS-140，不区分大小写，区分重音，区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1WS\$1UTF8 | Japanese-XJIS-140，不区分大小写，区分重音，区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1WS\$1VSS | Japanese-XJIS-140，不区分大小写，区分重音，区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140，不区分大小写，区分重音，区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1UTF8 | Japanese-XJIS-140，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1VSS | Japanese-XJIS-140，不区分大小写，区分重音，不区分假名类型，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1VSS\$1UTF8 | Japanese-XJIS-140，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1WS | Japanese-XJIS-140，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1WS\$1UTF8 | Japanese-XJIS-140，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1WS\$1VSS | Japanese-XJIS-140，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140，不区分大小写，区分重音，不区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI | Japanese-XJIS-140，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS | Japanese-XJIS-140，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1UTF8 | Japanese-XJIS-140，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1VSS | Japanese-XJIS-140，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1VSS\$1UTF8 | Japanese-XJIS-140，区分大小写，不区分重音，区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1WS | Japanese-XJIS-140，区分大小写，不区分重音，区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1WS\$1UTF8 | Japanese-XJIS-140，区分大小写，不区分重音，区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1WS\$1VSS | Japanese-XJIS-140，区分大小写，不区分重音，区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140，区分大小写，不区分重音，区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1UTF8 | Japanese-XJIS-140，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1VSS | Japanese-XJIS-140，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1VSS\$1UTF8 | Japanese-XJIS-140，区分大小写，不区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1WS | Japanese-XJIS-140，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1WS\$1UTF8 | Japanese-XJIS-140，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1WS\$1VSS | Japanese-XJIS-140，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140，区分大小写，不区分重音，不区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS | Japanese-XJIS-140，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS | Japanese-XJIS-140，区分大小写，区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1UTF8 | Japanese-XJIS-140，区分大小写，区分重音，区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1VSS | Japanese-XJIS-140，区分大小写，区分重音，区分假名，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1VSS\$1UTF8 | Japanese-XJIS-140，区分大小写，区分重音，区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS | Japanese-XJIS-140，区分大小写，区分重音，区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS\$1UTF8 | Japanese-XJIS-140，区分大小写，区分重音，区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS\$1VSS | Japanese-XJIS-140，区分大小写，区分重音，区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140，区分大小写，区分重音，区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1UTF8 | Japanese-XJIS-140，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1VSS | Japanese-XJIS-140，区分大小写，区分重音，不区分假名类型，不区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1VSS\$1UTF8 | Japanese-XJIS-140，区分大小写，区分重音，不区分假名，不区分全半角，补充字符，区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1WS | Japanese-XJIS-140，区分大小写，区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1WS\$1UTF8 | Japanese-XJIS-140，区分大小写，区分重音，不区分假名，区分全半角，补充字符，不区分变体选择器，UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1WS\$1VSS | Japanese-XJIS-140，区分大小写，区分重音，不区分假名，区分全半角，补充字符，区分变体选择器 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140，区分大小写，区分重音，不区分假名，区分全半角，补充字符，区分变体选择器，UTF8 | 
| Korean\$1Wansung\$1CI\$1AS | Korean\$1Wansung，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Latin1\$1General\$1100\$1BIN | Latin1-General-100，二进制排序 | 
| Latin1\$1General\$1100\$1BIN2 | Latin1-General-100，二进制代码点比较排序 | 
| Latin1\$1General\$1100\$1BIN2\$1UTF8 | Latin1-General-100，二进制代码点比较排序，UTF8 | 
| Latin1\$1General\$1100\$1CI\$1AS | Latin1-General-100，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Latin1\$1General\$1100\$1CI\$1AS\$1SC\$1UTF8 | Latin1-General-100，不区分大小写，区分重音，不区分假名，不区分全半角，补充字符，UTF8 | 
| Latin1\$1General\$1BIN | Latin1-General，二进制排序 | 
| Latin1\$1General\$1BIN2 | Latin1-General，二进制代码点比较排序 | 
| Latin1\$1General\$1CI\$1AI | Latin1-General，不区分大小写，不区分重音，不区分假名，不区分全半角 | 
| Latin1\$1General\$1CI\$1AS | Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| Latin1\$1General\$1CI\$1AS\$1KS | Latin1-General，不区分大小写，区分重音，区分假名，不区分全半角 | 
| Latin1\$1General\$1CS\$1AS | Latin1-General，区分大小写，区分重音，不区分假名，不区分全半角 | 
| Modern\$1Spanish\$1CI\$1AS | Modern\$1Spanish，不区分大小写，区分重音，不区分假名，不区分全半角 | 
| SQL\$11xCompat\$1CP850\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角，对于非 Unicode 数据，为代码页 850 上的 SQL Server 排序顺序 49 | 
| SQL\$1Latin1\$1General\$1CP1\$1CI\$1AI | 对于 Unicode 数据为 Latin1-General，不区分大小写，不区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1252 上的 SQL Server 排序顺序 54 | 
| SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1252 上的 SQL Server 排序顺序 52 | 
| SQL\$1Latin1\$1General\$1CP1\$1CS\$1AS | 对于 Unicode 数据为 Latin1-General，区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1252 上的 SQL Server 排序顺序 51 | 
| SQL\$1Latin1\$1General\$1CP1250\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1250 上的 SQL Server 排序顺序 82 | 
| SQL\$1Latin1\$1General\$1CP1250\$1CS\$1AS | 对于 Unicode 数据为 Latin1-General，区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1250 上的 SQL Server 排序顺序 81 | 
| SQL\$1Latin1\$1General\$1CP1251\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1251 上的 SQL Server 排序顺序 106 | 
| SQL\$1Latin1\$1General\$1CP1251\$1CS\$1AS | 对于 Unicode 数据为 Latin1-General，区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1251 上的 SQL Server 排序顺序 105 | 
| SQL\$1Latin1\$1General\$1CP1253\$1CI\$1AI | 对于 Unicode 数据为 Latin1-General，不区分大小写，不区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1253 上的 SQL Server 排序顺序 124 | 
| SQL\$1Latin1\$1General\$1CP1253\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1253 上的 SQL Server 排序顺序 114 | 
| SQL\$1Latin1\$1General\$1CP1253\$1CS\$1AS | 对于 Unicode 数据为 Latin1-General，区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1253 上的 SQL Server 排序顺序 113 | 
| SQL\$1Latin1\$1General\$1CP1254\$1CI\$1AS | 对于 Unicode 数据为 Turkish，不区分大小写，区分重音，不区分假名，不区分全半角，对于非 Unicode 数据，为代码页 1254 上的 SQL Server 排序顺序 130 | 
| SQL\$1Latin1\$1General\$1CP1254\$1CS\$1AS | 对于 Unicode 数据为 Turkish，区分大小写，区分重音，不区分假名，不区分全半角，对于非 Unicode 数据，为代码页 1254 上的 SQL Server 排序顺序 129 | 
| SQL\$1Latin1\$1General\$1CP1255\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1255 上的 SQL Server 排序顺序 138 | 
| SQL\$1Latin1\$1General\$1CP1255\$1CS\$1AS | 对于 Unicode 数据为 Latin1-General，区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1255 上的 SQL Server 排序顺序 137 | 
| SQL\$1Latin1\$1General\$1CP1256\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1256 上的 SQL Server 排序顺序 146 | 
| SQL\$1Latin1\$1General\$1CP1256\$1CS\$1AS | 对于 Unicode 数据为 Latin1-General，区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1256 上的 SQL Server 排序顺序 145 | 
| SQL\$1Latin1\$1General\$1CP1257\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1257 上的 SQL Server 排序顺序 154 | 
| SQL\$1Latin1\$1General\$1CP1257\$1CS\$1AS | 对于 Unicode 数据为 Latin1-General，区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1257 上的 SQL Server 排序顺序 153 | 
| SQL\$1Latin1\$1General\$1CP437\$1BIN | 对于 Unicode 数据为 Latin1-General，二进制排序，对于非 Unicode 数据为代码页 437 上的 SQL Server 排序顺序 30 | 
| SQL\$1Latin1\$1General\$1CP437\$1BIN2 | 对于 Unicode 数据为 Latin1-General，二进制代码点比较排序，对于非 Unicode 数据为代码页 437 上的 SQL Server 排序顺序 30 | 
| SQL\$1Latin1\$1General\$1CP437\$1CI\$1AI | 对于 Unicode 数据为 Latin1-General，不区分大小写，不区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 437 上的 SQL Server 排序顺序 34 | 
| SQL\$1Latin1\$1General\$1CP437\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角，对于非 Unicode 数据，为代码页 437 上的 SQL Server 排序顺序 32 | 
| SQL\$1Latin1\$1General\$1CP437\$1CS\$1AS | 对于 Unicode 数据为 Latin1-General，区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 437 上的 SQL Server 排序顺序 31 | 
| SQL\$1Latin1\$1General\$1CP850\$1BIN | 对于 Unicode 数据为 Latin1-General，二进制排序，对于非 Unicode 数据为代码页 850 上的 SQL Server 排序顺序 40 | 
| SQL\$1Latin1\$1General\$1CP850\$1BIN2 | 对于 Unicode 数据为 Latin1-General，二进制代码点比较排序，对于非 Unicode 数据为代码页 850 上的 SQL Server 排序顺序 40 | 
| SQL\$1Latin1\$1General\$1CP850\$1CI\$1AI | 对于 Unicode 数据为 Latin1-General，不区分大小写，不区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 850 上的 SQL Server 排序顺序 44 | 
| SQL\$1Latin1\$1General\$1CP850\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角，对于非 Unicode 数据，为代码页 850 上的 SQL Server 排序顺序 42 | 
| SQL\$1Latin1\$1General\$1CP850\$1CS\$1AS | 对于 Unicode 数据为 Latin1-General，区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 850 上的 SQL Server 排序顺序 41 | 
| SQL\$1Latin1\$1General\$1Pref\$1CP1\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角；对于非 Unicode 数据，为代码页 1252 上的 SQL Server 排序顺序 53 | 
| SQL\$1Latin1\$1General\$1Pref\$1CP437\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角，对于非 Unicode 数据，为代码页 437 上的 SQL Server 排序顺序 33 | 
| SQL\$1Latin1\$1General\$1Pref\$1CP850\$1CI\$1AS | 对于 Unicode 数据为 Latin1-General，不区分大小写，区分重音，不区分假名，不区分全半角，对于非 Unicode 数据，为代码页 850 上的 SQL Server 排序顺序 43 | 
| Thai\$1CI\$1AS | Thai，不区分大小写，区分重音，不区分假名，不区分全半角 | 

# RDS Custom for SQL Server 数据库实例的本地时区
<a name="custom-reqs-limits-MS.TimeZone"></a>

原定设置情况下，已设置 RDS Custom for SQL Server 数据库实例的时区。当前默认值为协调世界时 (UTC)。您可改为将数据库实例的时区设置为本地时区以匹配应用程序的时区。

首次创建数据库实例时将设置时区。您可以使用 [AWS 管理控制台](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)、Amazon RDS API [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html.html) 操作或 AWS CLI [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 命令创建数据库实例。

如果数据库实例是多可用区部署的一部分，则当您进行故障转移时，您的时区将保留您设置的本地时区。

在请求时间点还原时，请指定要还原到的时间。时间以您的当地时区显示。有关更多信息，请参阅“[将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)”。

下面是在数据库实例上设置本地时区时的限制：
+ 您可以在实例创建期间为数据库实例配置时区，但不能修改现有 RDS Custom for SQL Server 数据库实例的时区。
+ 如果修改了现有 RDS Custom for SQL Server 数据库实例的时区，则 RDS Custom 会将数据库实例状态更改为 `unsupported-configuration`，并发送事件通知。
+ 您无法将快照从一个时区的数据库实例还原至另一个时区的数据库实例。
+ 强烈建议您不要将备份文件从一个时区还原到另一个时区。如果您将备份文件从一个时区还原至为另一个时区，则必须审查您的查询和应用程序来查看时区更改的效果。有关更多信息，请参阅“[使用本机备份和还原导入和导出 SQL Server 数据库](SQLServer.Procedural.Importing.md)”。

## 支持的时区
<a name="custom-reqs-limits-MS.TimeZone.Zones"></a>

您可以将本地时区设置为下表中列出的值之一。


| 时区 | 标准时间偏差 | 描述 | 备注 | 
| --- | --- | --- | --- | 
| 阿富汗标准时间 | (UTC\$104:30) | 喀布尔 | 此时区不遵守夏令时。 | 
| 阿拉斯加标准时间 | (UTC–09:00) | 阿拉斯加州 |  | 
| 阿留申群岛标准时间 | (UTC–10:00) | 阿留申群岛 |  | 
| 阿尔泰标准时间 | (UTC\$107:00) | 巴尔瑙尔，戈尔诺-阿尔泰斯克 |  | 
| 阿拉伯标准时间 | (UTC\$103:00) | 科威特，利雅得 | 此时区不遵守夏令时。 | 
| 阿拉伯标准时间 | (UTC\$104:00) | 阿布扎比、马斯喀特 |  | 
| 阿拉伯标准时间 | (UTC\$103:00) | 巴格达 | 此时区不遵守夏令时。 | 
| 阿根廷标准时间 | (UTC–03:00) | 布宜诺斯艾利斯市 | 此时区不遵守夏令时。 | 
| 阿斯特拉罕标准时间 | (UTC\$104:00) | 阿斯特拉罕，乌里扬诺夫斯克 |  | 
| 大西洋标准时间 | (UTC–04:00) | 大西洋时间 (加拿大) |  | 
| 澳大利亚中部标准时间 | (UTC\$109:30) | 达尔文 | 此时区不遵守夏令时。 | 
| 澳大利亚中西部标准时间 | (UTC\$108:45) | 尤克拉 |  | 
| 澳大利亚东部标准时间 | (UTC\$110:00) | 堪培拉、墨尔本、悉尼 |  | 
| 阿塞拜疆标准时间 | (UTC\$104:00) | 巴库 |  | 
| 亚速尔群岛标准时间 | (UTC–01:00) | 亚速尔群岛 |  | 
| 巴伊亚标准时间 | (UTC–03:00) | 萨尔瓦多 |  | 
| 孟加拉国标准时间 | (UTC\$106:00) | 达卡 | 此时区不遵守夏令时。 | 
| 白俄罗斯标准时间 | (UTC\$103:00) | 明斯克 | 此时区不遵守夏令时。 | 
| 布干维尔岛标准时间 | (UTC\$111:00) | 布干维尔岛 |  | 
| 加拿大中部标准时间 | (UTC–06:00) | 萨斯喀彻温省 | 此时区不遵守夏令时。 | 
| 佛得角标准时间 | (UTC–01:00) | 佛得角群岛 | 此时区不遵守夏令时。 | 
| 高加索标准时间 | (UTC\$104:00) | 埃里温 |  | 
| 澳大 利亚中部标准时间 | (UTC\$109:30) | 阿德莱德 |  | 
| 中美洲标准时间 | (UTC–06:00) | 中美洲 | 此时区不遵守夏令时。 | 
| 中亚标准时间 | (UTC\$106:00) | 阿斯塔纳 | 此时区不遵守夏令时。 | 
| 巴西中部标准时间 | (UTC–04:00) | 库亚巴 |  | 
| 中欧标准时间 | (UTC\$101:00) | 贝尔格莱德、布拉迪斯拉发、布达佩斯、卢布尔雅那、布拉格 |  | 
| 中欧标准时间 | (UTC\$101:00) | 萨拉热窝、斯科普里、华沙、萨格勒布 |  | 
| 太平洋中部标准时间 | (UTC\$111:00) | 索罗门群岛、新喀里多尼亚 | 此时区不遵守夏令时。 | 
| 中部标准时间 | (UTC–06:00) | 中部时间 (美国和加拿大) |  | 
| 中部标准时间（墨西哥） | (UTC–06:00) | 瓜达拉哈拉、墨西哥城、蒙特雷 |  | 
| 查塔姆群岛标准时间 | (UTC\$112:45) | 查塔姆群岛 |  | 
| 中国标准时间 | (UTC\$108:00) | 北京、重庆、香港特别行政区、乌鲁木齐 | 此时区不遵守夏令时。 | 
| 古巴标准时间 | (UTC–05:00) | 哈瓦那 |  | 
| 国际日期变更线标准时间 | (UTC–12:00) | 国际日期变更线西 | 此时区不遵守夏令时。 | 
| 东非标准时间 | (UTC\$103:00) | 内罗毕 | 此时区不遵守夏令时。 | 
| 澳大利亚东部标准时间 | (UTC\$110:00) | 布里斯班 | 此时区不遵守夏令时。 | 
| 东欧标准时间 | (UTC\$102:00) | 基希讷乌 |  | 
| 东部南美洲标准时间 | (UTC–03:00) | 巴西利亚 |  | 
| 复活节岛标准时间 | (UTC–06:00) | 复活节岛 |  | 
| 东部标准时间 | (UTC–05:00) | 东部时间 (美国和加拿大) |  | 
| 东部标准时间（墨西哥） | (UTC–05:00) | 切图马尔 |  | 
| 埃及标准时间 | (UTC\$102:00) | 开罗 |  | 
| 叶卡捷琳堡标准时间 | (UTC\$105:00) | 叶卡捷琳堡 |  | 
| 斐济标准时间 | (UTC\$112:00) | 斐济 |  | 
| FLE 标准时间 | (UTC\$102:00) | 赫尔辛基，基辅，里加，索非亚，塔林，维尔纽斯 |  | 
| 格鲁吉亚标准时间 | (UTC\$104:00) | 第比利斯 | 此时区不遵守夏令时。 | 
| GMT 标准时间 | (UTC) | 都柏林、爱丁堡、里斯本、伦敦 |  此时区与格林威治标准时间不同。此时区遵守夏令时。 | 
| 格陵兰标准时间 | (UTC–03:00) | 格陵兰 |  | 
| 格林威治标准时间 | (UTC) | 蒙罗维亚、雷克雅未克 | 此时区不遵守夏令时。 | 
| GTB 标准时间 | (UTC\$102:00) | 雅典、布加勒斯特 |  | 
| 海地标准时间 | (UTC–05:00) | 海地 |  | 
| 夏威夷标准时间 | (UTC–10:00) | 夏威夷州 |  | 
| 印度标准时间 | (UTC\$105:30) | 钦奈、加尔各答、孟买、新德里 | 此时区不遵守夏令时。 | 
| 伊朗标准时间 | (UTC\$103:30) | 德黑兰 |  | 
| 以色列标准时间 | (UTC\$102:00) | 耶路撒冷 |  | 
| 约旦标准时间 | (UTC\$102:00) | 阿曼 |  | 
| 加里宁格勒标准时间 | (UTC\$102:00) | 加里宁格勒 |  | 
| 堪察加标准时间 | (UTC\$112:00) | 彼得罗巴甫洛夫斯克-堪察加 – 旧 |  | 
| 韩国标准时间 | (UTC\$109:00) | 首尔 | 此时区不遵守夏令时。 | 
| 利比亚标准时间 | (UTC\$102:00) | 的黎波里 |  | 
| 莱恩群岛标准时间 | (UTC\$114:00) | 圣诞岛 |  | 
| 豪勋爵岛标准时间 | (UTC\$110:30) | 豪勋爵岛 |  | 
| 马加丹标准时间 | (UTC\$111:00) | 马加丹 | 此时区不遵守夏令时。 | 
| 麦哲伦标准时间 | (UTC–03:00) | 蓬塔阿雷纳斯 |  | 
| 马克萨斯群岛标准时间 | (UTC–09:30) | 马克萨斯群岛 |  | 
| 毛里求斯标准时间 | (UTC\$104:00) | 路易港 | 此时区不遵守夏令时。 | 
| 中东标准时间 | (UTC\$102:00) | 贝鲁特 |  | 
| 蒙得维的亚标准时间 | (UTC–03:00) | 蒙得维的亚 |  | 
| 摩洛哥标准时间 | (UTC\$101:00) | 卡萨布兰卡 |  | 
| 山地标准时间 | (UTC–07:00) | 山区时间 (美国和加拿大) |  | 
| 山地标准时间（墨西哥） | (UTC–07:00) | 奇瓦瓦、拉巴斯、马萨特兰 |  | 
| 缅甸标准时间 | (UTC\$106:30) | 仰光 | 此时区不遵守夏令时。 | 
| 中亚北部标准时间 | (UTC\$107:00) | 新西伯利亚 |  | 
| 纳米比亚标准时间 | (UTC\$102:00) | 温得和克 |  | 
| 尼泊尔标准时间 | (UTC\$105:45) | 加德满都 | 此时区不遵守夏令时。 | 
| 新西兰标准时间 | (UTC\$112:00) | 奥克兰、惠灵顿 |  | 
| 纽芬兰标准时间 | (UTC–03:30) | 纽芬兰省 |  | 
| 诺福克岛标准时间 | (UTC\$111:00) | 诺福克岛 |  | 
| 北亚东部标准时间 | (UTC\$108:00) | 伊尔库茨克 |  | 
| 北亚标准时间 | (UTC\$107:00) | 克拉斯诺亚尔斯克 |  | 
| 朝鲜标准时间 | (UTC\$109:00) | 平壤 |  | 
| 鄂木斯克标准时间 | (UTC\$106:00) | 鄂木斯克 |  | 
| 太平洋 SA 标准时间 | (UTC–03:00) | 圣地亚哥 |  | 
| 太平洋标准时间 | (UTC–08:00) | 太平洋时间 (美国和加拿大) |  | 
| 太平洋标准时间（墨西哥） | (UTC–08:00) | 下加利福尼亚州 |  | 
| 巴基斯坦标准时间 | (UTC\$105:00) | 伊斯兰堡，卡拉奇 | 此时区不遵守夏令时。 | 
| 巴拉圭标准时间 | (UTC–04:00) | 亚松森 |  | 
| 罗马标准时间 | (UTC\$101:00) | 布鲁塞尔，哥本哈根，马德里，巴黎 |  | 
| 俄罗斯时区 10 | (UTC\$111:00) | 乔库尔达赫 |  | 
| 俄罗斯时区 11 | (UTC\$112:00) | 阿纳德尔，堪察加彼得罗巴甫洛夫斯克 |  | 
| 俄罗斯时区 3 | (UTC\$104:00) | 伊热夫斯克，萨马拉 |  | 
| 俄罗斯标准时间 | (UTC\$103:00) | 莫斯科、圣彼德堡、伏尔加格勒 | 此时区不遵守夏令时。 | 
| 南美洲东部标准时间 | (UTC–03:00) | 卡宴，福塔雷萨 | 此时区不遵守夏令时。 | 
| SA 太平洋标准时间 | (UTC–05:00) | 波哥大、利马、基多、里约布兰科 |  此时区不遵守夏令时。 | 
| 南美洲西部标准时间 | (UTC–04:00) | 乔治敦，拉巴斯，马瑙斯，圣胡安 | 此时区不遵守夏令时。 | 
| 圣皮埃尔标准时间 | (UTC–03:00) | 圣皮埃尔和密克隆群岛 |  | 
| 萨哈林标准时间 | (UTC\$111:00) | 萨哈林 |  | 
| 萨摩亚群岛标准时间 | (UTC\$113:00) | 萨摩亚群岛 |  | 
| 圣多美标准时间 | (UTC\$101:00) | 圣多美 |  | 
| 萨拉托夫标准时间 | (UTC\$104:00) | 萨拉托夫 |  | 
| 东南亚标准时间 | (UTC\$107:00) | 曼谷、河内、雅加达 | 此时区不遵守夏令时。 | 
| 新加坡标准时间 | (UTC\$108:00) | 吉隆坡、新加坡 | 此时区不遵守夏令时。 | 
| 南非标准时间 | (UTC\$102:00) | 哈拉雷，比勒陀利亚 | 此时区不遵守夏令时。 | 
| 斯里兰卡标准时间 | (UTC\$105:30) | 斯里哈亚华登尼普拉 | 此时区不遵守夏令时。 | 
| 苏丹标准时间 | (UTC\$102:00) | 喀土穆 |  | 
| 叙利亚标准时间 | (UTC\$102:00) | 大马士革 |  | 
| 台北标准时间 | (UTC\$108:00) | 台北 | 此时区不遵守夏令时。 | 
| 塔斯马尼亚岛标准时间 | (UTC\$110:00) | 霍巴特 |  | 
| 托坎廷斯标准时间 | (UTC–03:00) | 阿拉瓜伊纳 |  | 
| 东京标准时间 | (UTC\$109:00) | 大坂、札幌、东京 | 此时区不遵守夏令时。 | 
| 托木斯克标准时间 | (UTC\$107:00) | 托木斯克 |  | 
| 汤加标准时间 | (UTC\$113:00) | 努库阿洛法 | 此时区不遵守夏令时。 | 
| 外贝加尔标准时间 | (UTC\$109:00) | 赤塔市 |  | 
| 土耳其标准时间 | (UTC\$103:00) | 伊斯坦布尔 |  | 
| 特克斯和凯科斯群岛标准时间 | (UTC–05:00) | 特克斯和凯科斯群岛 |  | 
| 乌兰巴托标准时间 | (UTC\$108:00) | 乌兰巴托 | 此时区不遵守夏令时。 | 
| 美国东部标准时间 | (UTC–05:00) | 印第安纳 (东部) |  | 
| 美国山地标准时间 | (UTC–07:00) | 亚利桑那州 | 此时区不遵守夏令时。 | 
| UTC | UTC | 协调世界时 | 此时区不遵守夏令时。 | 
| UTC–02 | (UTC–02:00) | 协调世界时–02 | 此时区不遵守夏令时。 | 
| UTC–08 | (UTC–08:00) | 协调世界时–08 |  | 
| UTC–09 | (UTC–09:00) | 协调世界时–09 |  | 
| UTC–11 | (UTC–11:00) | 协调世界时–11 | 此时区不遵守夏令时。 | 
| UTC\$112 | (UTC\$112:00) | 协调世界时\$112 | 此时区不遵守夏令时。 | 
| UTC\$113 | (UTC\$113:00) | 协调世界时\$113 |  | 
| 委内瑞拉标准时间 | (UTC–04:00) | 加拉加斯 | 此时区不遵守夏令时。 | 
| 符拉迪沃斯托克标准时间 | (UTC\$110:00) | 符拉迪沃斯托克 |  | 
| 伏尔加格勒标准时间 | (UTC\$104:00) | 伏尔加格勒 |  | 
| 澳大利亚西部标准时间 | (UTC\$108:00) | 珀斯 | 此时区不遵守夏令时。 | 
| 中非西部标准时间 | (UTC\$101:00) | 中非西部 | 此时区不遵守夏令时。 | 
| 西欧标准时间 | (UTC\$101:00) | 阿姆斯特丹、柏林、伯尔尼、罗马、斯德哥尔摩、维也纳 |  | 
| 西蒙古标准时间 | (UTC\$107:00) | 科布多 |  | 
| 西亚标准时间 | (UTC\$105:00) | 阿什哈巴德，塔什干 | 此时区不遵守夏令时。 | 
| 西岸标准时间 | (UTC\$102:00) | 加沙，希伯伦 |  | 
| 西太平洋标准时间 | (UTC\$110:00) | 关岛，莫尔兹比港 | 此时区不遵守夏令时。 | 
| 雅库茨克标准时间 | (UTC\$109:00) | 雅库茨克 |  | 

# 在 RDS Custom for SQL Server 中使用服务主密钥
<a name="custom-sqlserver-features.smk"></a>

RDS Custom for SQL Server 支持使用服务主密钥（SMK）。RDS Custom 在 RDS Custom for SQL Server 数据库实例的整个生命周期中保留相同的 SMK。通过保留相同的 SMK，您的数据库实例可以使用通过 SMK 加密的对象，例如链接服务器密码和凭证。如果您使用多可用区部署，RDS Custom 还会在主和辅助数据库实例之间同步和维护 SMK。

**Topics**
+ [区域和版本可用性](#custom-sqlserver-features.smk.list)
+ [支持的特征](#custom-sqlserver-features.smk.supportedfeatures)
+ [使用 TDE](#custom-sqlserver-features.smk.tde)
+ [配置功能](#custom-sqlserver-features.smk.configuringfeatures)
+ [要求和限制](#custom-sqlserver-features.smk.reqlimits)

## 区域和版本可用性
<a name="custom-sqlserver-features.smk.list"></a>

对于 RDS Custom 上提供的所有 SQL Server 版本，在所有提供 RDS Custom for SQL Server 的区域中都支持使用 SMK。有关适用于 RDS Custom for SQL Server 的 Amazon RDS 的版本和区域可用性的更多信息，请参阅[支持 RDS Custom for SQL Server 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.sq)。

## 支持的特征
<a name="custom-sqlserver-features.smk.supportedfeatures"></a>

将 SMK 与 RDS Custom for SQL Server 一起使用时，支持以下功能：
+ 透明数据加密 (TDE)
+ 列级加密
+ 数据库邮件
+ 链接服务器
+ SQL Server Integration Services (SSIS)

## 使用 TDE
<a name="custom-sqlserver-features.smk.tde"></a>

SMK 支持配置透明数据加密（TDE），这种加密在数据写入存储之前对数据进行加密，并在从存储读取数据时自动解密数据。与 RDS for SQL Server 不同，在 RDS Custom for SQL Server 数据库实例上配置 TDE 不需要使用选项组。相反，创建证书和数据库加密密钥后，可以运行以下命令在数据库级别开启 TDE：

```
ALTER DATABASE [myDatabase] SET ENCRYPTION ON;
```

 有关将 TDE 与 RDS for SQL Server 一起使用的更多信息，请参阅[SQL Server 中的透明数据加密支持](Appendix.SQLServer.Options.TDE.md)。

 有关 Microsoft SQL Server 中的 TDE 的详细信息，请参阅 Microsoft 文档中的[透明数据加密](https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption?view=sql-server-ver15)。

## 配置功能
<a name="custom-sqlserver-features.smk.configuringfeatures"></a>

有关配置将 SMK 和 RDS Custom for SQL Server 结合使用的功能的详细步骤，您可以参阅 Amazon RDS 数据库博客中的以下博客：
+ 链接服务器：[Configuring linked servers on RDS Custom for SQL Server](https://aws.amazon.com/blogs/database/configure-linked-servers-on-amazon-rds-custom-for-sql-server/)。
+ SSIS：[Migrate SSIS packages to RDS Custom for SQL Server](https://aws.amazon.com/blogs/database/migrate-microsoft-sql-server-ssis-packages-to-amazon-rds-custom-for-sql-server/)。
+ TDE：[Secure your data using TDE on RDS Custom for SQL Server](https://aws.amazon.com/blogs/database/secure-your-data-at-rest-on-amazon-rds-custom-for-sql-server-using-transparent-data-encryption-tde-or-column-level-encryption-cle/)。

## 要求和限制
<a name="custom-sqlserver-features.smk.reqlimits"></a>

在 RDS Custom for SQL Server 数据库实例中使用 SMK 时，请记住以下要求和限制：
+ 如果您在数据库实例上重新生成 SMK，则应立即执行手动数据库快照。我们建议尽可能避免重新生成 SMK。
+ 必须保留服务器证书和数据库主密钥密码的备份。如果不维护这些内容的备份，可能会导致数据丢失。
+ 如果您配置 SSIS，则应使用 SSM 文档将 RDS Custom for SQL Server 数据库实例加入到域中，以防扩展计算或主机更换。
+ 启用 TDE 或列加密后，数据库备份会自动加密。当您执行快照还原或时间点恢复时，将还原源数据库实例的 SMK 以解密进行还原的数据，并生成一个新的 SMK 来重新加密已还原实例上的数据。

 有关 Microsoft SQL Server 中服务主密钥的更多信息，请参阅 Microsoft 文档中的 [SQL Server 和数据库加密密钥](https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/sql-server-and-database-encryption-keys-database-engine?view=sql-server-ver15)。

# RDS Custom for SQL Server 支持更改数据捕获（CDC）
<a name="custom-sqlserver-features.cdc"></a>

## 概览
<a name="custom-sqlserver-features.cdc.overview"></a>

RDS Custom for SQL Server 为更改数据捕获（CDC）提供原生支持，使您能够跟踪和捕获 SQL Server 表中的数据修改。CDC 存储有关这些更改的详细元数据，以供后续检索和分析。有关 CDC 功能的详细信息，请参阅 Microsoft 文档中的 [Change data capture](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/track-data-changes-sql-server#Capture)。

在 SQL Server 中执行 CDC 操作时，需要确保 `sys.servers` 中*本地服务器*（具有 `server_id` = 0）的值与 `SERVERPROPERTY('ServerName')` 标识符的值相匹配。RDS Custom for SQL Server 在实例的整个生命周期中自动保持这种同步，以确保 CDC 持续正常运行，即使在维护或恢复操作期间更换了主机也是如此。

**重要**  
在多可用区实例失效转移后，`SERVERPROPERTY('Servername')` 功能会自动反映网络/计算机名称的更改。但是，在重新启动 `MSSQLSERVER` 服务之前，`@@SERVERNAME` 函数会保留旧的服务器名称。失效转移后，查询 @@SERVERNAME 会返回先前的服务器名称。要在失效转移后获得准确的服务器名称，请使用以下 SQL 查询：  

```
SELECT name FROM sys.servers WHERE server_id=0
```
此查询无需重新启动服务，即可提供最新的服务器名称信息。

## 区域和版本可用性
<a name="custom-sqlserver-features.cdc.regionAvail"></a>

在 RDS Custom for SQL Server 可用的所有 AWS 区域中，对于 RDS Custom 支持的所有 SQL Server 版本，均支持 CDC 功能。有关 RDS Custom for SQL Server 支持的版本和区域可用性的更多信息，请参阅[支持 RDS Custom for SQL Server 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.sq)。

## 要求和限制
<a name="custom-sqlserver-features.cdc.reqsLims"></a>

在 RDS Custom for SQL Server 上实施 CDC 时，请注意以下关键注意事项：
+ 如果您在 `sys.servers` 中手动设置 `@@SERVERNAME` 和/或*本地服务器*以使用 MS 复制等功能，并且 `sys.servers` 中本地服务器（具有 `server_id = 0`）的值设置为与 `*.rds.amazonaws.com` 或 `*.awsrds.*.com` 匹配的格式，则 RDS Custom for SQL Server 不会尝试将其修改为与 `SERVERPROPERTY('ServerName')` 匹配。
+ 当远程登录名或链接服务器当前正在使用旧主机名时，RDS 无法将 `sys.servers` 中的本地服务器（具有 `server_id = 0`）修改为新主机名。此限制适用于两种情况：
  + 当链接服务器使用与旧主机名关联的远程登录名与本地服务器建立连接时
  + 当 RDS Custom for SQL Server 实例充当发布者或分发者，并对其订阅用户实例具有与旧主机名关联的链接登录名时。

## 故障排除
<a name="custom-sqlserver-features.cdc.Troubleshooting"></a>

要识别与旧服务器名称关联的远程登录名或链接登录名，请使用以下查询。验证结果并移除这些登录名，以确保 CDC 功能正常。

```
SELECT * FROM sys.remote_logins WHERE server_id=0
```

或

```
select sss.srvname,ssp.name,srl.remote_name  from sys.server_principals ssp 
inner join sys.remote_logins srl on srl.local_principal_id=ssp.principal_id
inner join sys.sysservers sss  on srl.server_id = sss.srvid
where sss.srvname = @@SERVERNAME
```

# 为 Amazon RDS Custom for SQL Server 设置环境
<a name="custom-setup-sqlserver"></a>

在为 Amazon RDS Custom for SQL Server 数据库实例创建和管理数据库实例之前，请确保执行以下任务。

**Contents**
+ [设置 RDS Custom for SQL Server 的先决条件](#custom-setup-sqlserver.review)
  + [使用 AWS 管理控制台自动创建实例配置文件](#custom-setup-sqlserver.instanceProfileCreation)
+ [步骤 1：为您的 IAM 主体授予所需的权限](#custom-setup-sqlserver.iam-user)
+ [步骤 2：配置网络、实例配置文件和加密](#custom-setup-sqlserver.iam-vpc)
  + [使用 CloudFormation 进行配置](#custom-setup-sqlserver.cf)
    + [CloudFormation 所需的参数](#custom-setup-sqlserver.cf.params)
    + [下载 CloudFormation 模板文件](#custom-setup-sqlserver.cf.download)
    + [使用 CloudFormation 配置资源](#custom-setup-sqlserver.cf.config)
  + [手动配置](#custom-setup-sqlserver.manual)
    + [请确保您有对称的加密 AWS KMS 密钥](#custom-setup-sqlserver.cmk)
    + [手动创建您的 IAM 角色和实例配置文件](#custom-setup-sqlserver.iam)
      + [创建 AWSRDSCustomSQLServerInstanceRole IAM 角色](#custom-setup-sqlserver.iam.create-role)
      + [将访问策略添加到 AWSRDSCustomSQLServerInstanceRole](#custom-setup-sqlserver.iam.add-policy)
      + [创建您的 RDS Custom for SQL Server 实例配置文件](#custom-setup-sqlserver.iam.create-profile)
      + [请将 AWSRDSCustomSQLServerInstanceRole 添加到您的 RDS Custom for SQL Server 实例配置文件中](#custom-setup-sqlserver.iam.add-profile)
    + [手动配置您的 VPC](#custom-setup-sqlserver.vpc)
      + [配置您的 VPC 安全组](#custom-setup-sqlserver.vpc.sg)
      + [为依赖项 AWS 服务配置端点](#custom-setup-sqlserver.vpc.endpoints)
      + [配置实例元数据服务](#custom-setup-sqlserver.vpc.imds)
+ [跨实例限制](#custom-setup-sqlserver.cross-instance-restriction)

**注意**  
有关如何设置先决条件和启动 Amazon RDS Custom for SQL Server 的分步教程，请参阅[通过 CloudFormation 模板开始使用 Amazon RDS Custom for SQL Server（网络设置）](https://aws.amazon.com/blogs/database/get-started-with-amazon-rds-custom-for-sql-server-using-an-aws-cloudformation-template-network-setup/)和[了解创建 Amazon RDS Custom for SQL Server 实例需满足的先决条件](https://aws.amazon.com/blogs/database/explore-the-prerequisites-required-to-create-an-amazon-rds-custom-for-sql-server-instance/)。

## 设置 RDS Custom for SQL Server 的先决条件
<a name="custom-setup-sqlserver.review"></a>

在创建 RDS Custom for SQL Server 数据库实例之前，请确保您的环境符合本主题中描述的要求。也可以使用 CloudFormation 模板在您的AWS 账户中设置先决条件。有关更多信息，请参阅[使用 CloudFormation 进行配置](#custom-setup-sqlserver.cf)

RDS Custom for SQL Server 要求您配置以下先决条件：
+ 配置创建实例所需的 AWS Identity and Access Management（IAM）权限。这是向 RDS 发出 `create-db-instance` 请求所需的 AWS Identity and Access Management（IAM）用户或角色。
+ 配置 RDS Custom for SQL Server 数据库实例所需的必备资源：
  + 配置加密 RDS Custom 实例所需的 AWS KMS 密钥。RDS Custom 在创建实例时需要使用客户托管密钥进行加密。KMS 密钥 ARN、ID、别名 ARN 或别名在创建 RDS Custom 数据库实例的请求中作为 `kms-key-id` 参数传递。
  + 在 RDS Custom for SQL Server 数据库实例中配置所需的权限。RDS Custom 在创建实例时会将实例配置文件附加到数据库实例，并使用它在数据库实例中进行自动化。在 RDS Custom 创建请求中，实例配置文件名称设置为 `custom-iam-instance-profile`。可以从 AWS 管理控制台创建实例配置文件或手动创建实例配置文件。有关更多信息，请参阅[使用 AWS 管理控制台自动创建实例配置文件](#custom-setup-sqlserver.instanceProfileCreation)和[手动创建您的 IAM 角色和实例配置文件](#custom-setup-sqlserver.iam)。
  + 根据对 RDS Custom for SQL Server 的要求配置网络设置。RDS Custom 实例位于您在创建实例时提供的子网中（配置有数据库子网组）。这些子网必须允许 RDS Custom 实例与实现 RDS 自动化所需的服务进行通信。

**注意**  
要满足上述要求，请确保没有任何限制账户级别权限的服务控制策略（SCP）。  
如果您使用的账户属于 AWS 组织，则该账户可能具有限制账户级别权限的服务控制策略（SCP）。确保 SCP 不会限制对于您使用以下过程创建的用户和角色的权限。  
有关 SCP 的更多信息，请参阅《AWS Organizations 用户指南》**中的[服务控制策略 (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。使用 AWS CLI 命令 [describe-organization](https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organization.html) 检查您的账户是否属于 AWS 组织。  
有关 AWS Organizations 的更多信息，请参阅《AWS Organizations 用户指南》**中的[什么是 AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)。

有关 RDS Custom for SQL Server 的一般要求，请参阅 [RDS Custom for SQL Server 的一般要求](custom-reqs-limits-MS.md#custom-reqs-limits.reqsMS)。

### 使用 AWS 管理控制台自动创建实例配置文件
<a name="custom-setup-sqlserver.instanceProfileCreation"></a>

RDS Custom 要求您创建和配置实例配置文件以启动任何 RDS Custom for SQL Server 数据库实例。使用 AWS 管理控制台只需一个步骤即可创建和附加新的实例配置文件。此选项位于**创建数据库**、**还原快照**和**还原到时间点**控制台页面的“RDS Custom 安全性”部分。选择**创建新的实例配置文件**以提供实例配置文件名称后缀。AWS 管理控制台将创建新的实例配置文件，该配置文件具有执行 RDS Custom 自动化任务所需的权限。要自动创建新的实例配置文件，您的登录 AWS 管理控制台用户必须具有 `iam:CreateInstanceProfile`、`iam:AddRoleToInstanceProfile`、`iam:CreateRole` 和 `iam:AttachRolePolicy` 权限。

**注意**  
此选项只在 AWS 管理控制台中可用。如果您使用的是 CLI 或 SDK，请使用 RDS Custom 提供的 CloudFormation 模板或手动创建实例配置文件。有关更多信息，请参阅[手动创建您的 IAM 角色和实例配置文件](#custom-setup-sqlserver.iam)。

## 步骤 1：为您的 IAM 主体授予所需的权限
<a name="custom-setup-sqlserver.iam-user"></a>

确保您有足够的访问权限来创建 RDS Custom 实例。可以使用控制台或 CLI 创建 RDS Custom for SQL Server 数据库实例的 IAM 用户或 IAM 角色（称为 *IAM 主体*）必须实施以下任一策略，才能成功创建数据库实例：
+ `AdministratorAccess` 策略
+ 具有以下其他权限的 `AmazonRDSFullAccess` 策略：

  ```
  iam:SimulatePrincipalPolicy
  cloudtrail:CreateTrail
  cloudtrail:StartLogging
  s3:CreateBucket
  s3:PutBucketPolicy
  s3:PutBucketObjectLockConfiguration
  s3:PutBucketVersioning 
  kms:CreateGrant
  kms:DescribeKey
  kms:Decrypt
  kms:ReEncryptFrom
  kms:ReEncryptTo
  kms:GenerateDataKeyWithoutPlaintext
  kms:GenerateDataKey
  ec2:DescribeImages
  ec2:RunInstances
  ec2:CreateTags
  ```

  RDS Custom 在创建实例期间使用这些权限。这些权限在您的账户中配置执行 RDS Custom 操作所需的资源。

  有关 `kms:CreateGrant` 权限的更多信息，请参阅 [AWS KMS key 管理](Overview.Encryption.Keys.md)。

以下示例 JSON 策略授予所需的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ValidateIamRole",
            "Effect": "Allow",
            "Action": "iam:SimulatePrincipalPolicy",
            "Resource": "*"
        },
        {
            "Sid": "CreateCloudTrail",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:CreateTrail",
                "cloudtrail:StartLogging"
            ],
            "Resource": "arn:aws:cloudtrail:*:*:trail/do-not-delete-rds-custom-*"
        },
        {
            "Sid": "CreateS3Bucket",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutBucketPolicy",
                "s3:PutBucketObjectLockConfiguration",
                "s3:PutBucketVersioning"
            ],
            "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*"
        },
        {
            "Sid": "CreateKmsGrant",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}
```

------

IAM 主体需要以下额外权限，才能使用自定义引擎版本（CEV）：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfigureKmsKeyEncryptionPermission",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:ReEncryptFrom",
                "kms:ReEncryptTo",
                "kms:GenerateDataKeyWithoutPlaintext",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key_id"
        },
        {
            "Sid": "CreateEc2Instance",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeImages",
                "ec2:RunInstances",
                "ec2:CreateTags"
            ],
            "Resource": "*"
        }
    ]
}
```

------

将 *111122223333* 替换为您用来创建实例的账户 ID。将 *us-east-1* 替换为您用来创建实例的 AWS 区域。将 *key\$1id* 替换为客户自主管理型密钥 ID。可以根据需要添加多个密钥。

有关启动 EC2 实例所需的资源级权限的更多信息，请参阅[启动实例（RunInstances）](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-runinstances)。

此外，IAM 主体需要对 IAM 角色具有 `iam:PassRole` 权限。必须将其附加到在请求的 `custom-iam-instance-profile` 参数中传递的实例配置文件，以创建 RDS Custom 数据库实例。实例配置文件及其附加的角色稍后将在[步骤 2：配置网络、实例配置文件和加密](#custom-setup-sqlserver.iam-vpc)中创建。

**注意**  
确保之前列出的权限不受服务控制策略 (SCP)、权限边界或与 IAM 主体关联的会话策略的限制。

## 步骤 2：配置网络、实例配置文件和加密
<a name="custom-setup-sqlserver.iam-vpc"></a>

您可以使用以下任一过程来配置 IAM 实例配置文件角色、虚拟私有云 (VPC) 和 AWS KMS 对称加密密钥：
+ [使用 CloudFormation 进行配置](#custom-setup-sqlserver.cf)（推荐）
+ [手动配置](#custom-setup-sqlserver.manual)

**注意**  
如果您的账户属于任一 AWS Organizations，请确保实例配置文件角色所需的权限不受服务控制策略（SCP）限制。  
此主题中的网络配置在与不公开访问的数据库实例配合使用时效果最佳。您无法从 VPC 外部直接连接到此类数据库实例。

### 使用 CloudFormation 进行配置
<a name="custom-setup-sqlserver.cf"></a>

为了简化设置，您可以使用 CloudFormation 模板文件创建 CloudFormation 堆栈。CloudFormation 模板根据 RDS Custom 的要求创建所有网络配置、实例配置文件和加密资源。

要了解如何创建堆栈，请参阅《CloudFormation 用户指南》**中的[在 CloudFormation 控制台上创建堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)。

有关如何使用 CloudFormation 模板启动 Amazon RDS Custom for SQL Server 的教程，请参阅 *AWS 数据库博客* 中的[通过 CloudFormation 模板开始使用 Amazon RDS Custom for SQL Server](https://aws.amazon.com/blogs/database/get-started-with-amazon-rds-custom-for-sql-server-using-an-aws-cloudformation-template-network-setup/)。

**Topics**
+ [CloudFormation 所需的参数](#custom-setup-sqlserver.cf.params)
+ [下载 CloudFormation 模板文件](#custom-setup-sqlserver.cf.download)
+ [使用 CloudFormation 配置资源](#custom-setup-sqlserver.cf.config)

#### CloudFormation 所需的参数
<a name="custom-setup-sqlserver.cf.params"></a>

使用 CloudFormation 配置 RDS Custom 必备资源需要以下参数：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)

#### CloudFormation 创建的资源
<a name="custom-setup-sqlserver.cf.list"></a>

使用默认设置成功创建 CloudFormation 堆栈会在您的 AWS 账户中创建以下资源：
+ 对称加密 KMS 密钥，用于加密 RDS Custom 管理的数据。
+ 使用 `AmazonRDSCustomInstanceProfileRolePolicy` 将实例配置文件与 IAM 角色相关联，以提供 RDS Custom 所需的权限。有关更多信息，请参阅《AWS 托管策略参考指南》**中的 [AmazonRDSCustomServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSCustomServiceRolePolicy.html)。
+ 将 CIDR 范围指定为 CloudFormation 参数的 VPC。默认值为 `10.0.0.0/16`。
+ 在参数中指定了 CIDR 范围的两个私有子网，以及 AWS 区域中的两个不同可用区。子网 CIDR 的默认值为 `10.0.128.0/20` 和 `10.0.144.0/20`。
+ 一个在参数中指定了 CIDR 范围的公有子网。子网 CIDR 的默认值为 10.0.0.0/20。EC2 实例位于此子网中，可用于连接到 RDS Custom 实例。
+ 为 VPC 设置了 DHCP 选项，域名解析为 Amazon 域名系统 (DNS) 服务器。
+ 与两个私有子网关联但无法访问互联网的路由表。
+ 与公有子网关联且可以访问互联网的路由表。
+ 与 VPC 关联且允许互联网访问公有子网的互联网网关。
+ 网络访问控制列表（ACL），与两个私有子网关联并且在 VPC 内只能访问 HTTPS 和数据库端口。
+ 要与 RDS Custom 实例关联的 VPC 安全组。限制对 RDS Custom 所需的 AWS 服务端点的出站 HTTPS 访问，以及对 EC2 实例安全组的入站数据库端口的访问。
+ 要与公有子网中的 EC2 实例关联的 VPC 安全组。限制出站数据库端口对 RDS Custom 实例安全组的访问。
+ 对于为 RDS Custom 所需的 AWS 服务端点创建的 VPC 端点，要与它们关联的 VPC 安全组。
+ 在其中创建 RDS Custom 实例的数据库子网组。此模板创建的两个私有子网已添加到数据库子网组中。
+ 对应于 RDS Custom 所需的每个 AWS 服务端点的 VPC 端点。

除了上述列表之外，将可用性配置设置为多可用区还会创建以下资源：
+ 允许私有子网之间通信的网络 ACL 规则。
+ 对与 RDS Custom 实例关联的 VPC 安全组中多可用区端口的入站和出站访问权限。
+ 与进行多可用区通信所需的 AWS 服务端点连接的 VPC 端点。

此外，设置 RDP 访问配置还会创建以下资源：
+ 配置从您的源 IP 地址对公有子网的 RDP 访问权限：
  + 允许建立从您的源 IP 到公有子网的 RDP 连接的网络 ACL 规则。
  + 对从您的源 IP 连接到与 EC2 实例关联的 VPC 安全组的 RDP 端口进行入口访问。
+ 配置从公有子网中的 EC2 实例到私有子网中的 RDS Custom 实例的 RDP 访问权限：
  + 允许建立从公有子网到私有子网的 RDP 连接的网络 ACL 规则。
  + 对从与 EC2 实例关联的 VPC 安全组连接到与 RDS Custom 实例关联的 VPC 安全组的 RDP 端口进行入站访问

使用以下过程为 RDS Custom for SQL Server 创建 CloudFormation 堆栈。

#### 下载 CloudFormation 模板文件
<a name="custom-setup-sqlserver.cf.download"></a>

**下载模板文件**

1. 打开链接 [custom-sqlserver-onboard.zip](samples/custom-sqlserver-onboard.zip) 的上下文（右键单击）菜单，然后选择 **Save Link As**（将链接另存为）。

1. 将文件保存并提取到您的计算机中。

#### 使用 CloudFormation 配置资源
<a name="custom-setup-sqlserver.cf.config"></a>

**使用 CloudFormation 配置资源**

1. 通过以下网址打开 CloudFormation 控制台：[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)。

1. 要启动 Create Stack（创建堆栈）向导，请选择 **Create Stack**（创建堆栈）。

   此时会显示 **Create stack**（创建快照）。

1. 对于 **Prerequisite - Prepare template**（先决条件 - 准备模板），请选择 **Template is ready**（模板已就绪）。

1. 对于 **Select Template**（选择模板），执行以下操作：

   1. 对于 **Template source**(模板来源)，选择 **Upload a template file**(上载模板文件)。

   1. 对于**选择文件**，请导航到并选择正确的文件。

1. 选择**下一步**。

   此时将出现 **Specify stack details**（指定堆栈详细信息）页面。

1. 对于**堆栈名称**，输入 **rds-custom-sqlserver**。

1. 对于 **Parameters**（参数），请执行以下操作：

   1. 要保留原定设置选项，请选择 **Next**（下一步)。

   1. 要更改选项，请选择相应的可用性配置、网络配置和 RDP 访问配置，然后选择**下一步**。

      在更改参数之前，请仔细阅读每个参数的说明。
**注意**  
如果您选择在此 CloudFormation 堆栈中至少创建一个多可用区实例，请确保 CloudFormation 堆栈参数**为先决条件设置选择可用性配置**设置为 `Multi-AZ`。如果您将 CloudFormation 堆栈创建为单可用区，请在创建第一个多可用区实例之前将 CloudFormation 堆栈更新为多可用区配置。

1. 在**配置堆栈选项**页面上，请选择**下一步**。

1. 在 **Review rds-custom-sqlserver**（查看 rds-custom-sqlserver）页面上，请执行以下操作：

   1. 对于**功能**，请选中****我确认 CloudFormation 可能使用自定义名称创建 IAM 资源****复选框。

   1. 选择**创建堆栈**。

**注意**  
请勿直接从资源页面更新从该 CloudFormation 堆栈创建的资源。这可以防止您使用 CloudFormation 模板将后续更新应用于这些资源。

CloudFormation 创建 RDS Custom for SQL Server 所需的资源。如果堆栈创建失败，请通读 **Events**（事件）选项卡，以查看哪项资源创建失败及其状态原因。

对于将作为参数传递以创建 RDS Custom for SQL Server 数据库实例的所有资源，控制台中此 CloudFormation 堆栈的 **Outputs**（输出）选项卡应包含有关它们的信息。确保使用 CloudFormation 为 RDS Custom 数据库实例创建的 VPC 安全组和数据库子网组。原定设置情况下，RDS 会尝试附加原定设置 VPC 安全组，该安全组可能没有您所需的访问权限。

如果您使用了 CloudFormation 来创建资源，则可以跳过[手动配置](#custom-setup-sqlserver.manual)。

#### 更新 CloudFormation 堆栈
<a name="custom-setup-sqlserver.cf.update"></a>

您还可以在创建后更新 CloudFormation 堆栈的一些相关配置。可以更新的配置包括：
+ RDS Custom for SQL Server 的可用性配置
  + **为先决条件设置选择可用性配置**：更新此参数可在单可用区和多可用区配置之间切换。如果您将此 CloudFormation 堆栈用于至少一个多可用区实例，则必须更新该堆栈以选择多可用区配置。
+ RDS Custom for SQL Server 的 RDP 访问配置
  + 您的源的 IPv4 CIDR 块：您可以通过更新此参数来更新您的源的 IPv4 CIDR 块（或 IP 地址范围）。将此参数设置为空白会删除从源 CIDR 块到公有子网的 RDP 访问配置。
  + 设置对 RDS Custom for SQL Server 的 RDP 访问：启用或禁用从 EC2 实例到 RDS Custom for SQL Server 实例的 RDP 连接。

#### 删除 CloudFormation 堆栈
<a name="custom-setup-sqlserver.cf.delete"></a>

在从 CloudFormation 堆栈中删除所有使用资源的 RDS Custom 实例后，即可删除该堆栈。RDS Custom 不会跟踪 CloudFormation 堆栈，因此当存在使用堆栈资源的数据库实例时，它不会阻止删除该堆栈。在删除该堆栈时，请确保没有使用堆栈资源的 RDS Custom 数据库实例。

**注意**  
当您删除 CloudFormation 堆栈时，该堆栈创建的所有资源都会被删除，但 KMS 密钥除外。KMS 密钥会进入等待删除状态并且将在 30 天后删除。要保留 KMS 密钥，请在 30 天宽限期内执行 [CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html) 操作。

### 手动配置
<a name="custom-setup-sqlserver.manual"></a>

如果您选择手动配置资源，请执行以下任务。

**注意**  
为了简化设置，您可以使用 CloudFormation 模板文件来创建 CloudFormation 堆栈，而不是手动配置。有关更多信息，请参阅 [使用 CloudFormation 进行配置](#custom-setup-sqlserver.cf)。  
也可以使用 AWS CLI 来完成本部分的操作。如果是，请下载并安装最新的 CLI。

**Topics**
+ [请确保您有对称的加密 AWS KMS 密钥](#custom-setup-sqlserver.cmk)
+ [手动创建您的 IAM 角色和实例配置文件](#custom-setup-sqlserver.iam)
+ [手动配置您的 VPC](#custom-setup-sqlserver.vpc)

#### 请确保您有对称的加密 AWS KMS 密钥
<a name="custom-setup-sqlserver.cmk"></a>

RDS Custom 需要对称的加密 AWS KMS key。在创建 RDS Custom for SQL Server 数据库实例时，确保提供 KMS 密钥标识符做为参数 `kms-key-id`。有关更多信息，请参阅 [为 Amazon RDS Custom for SQL Server 创建并连接到数据库实例](custom-creating-sqlserver.md)。

您有以下选项：
+ 如果您的 AWS 账户中有现有的客户自主管理型 KMS 密钥，则可以将其与 RDS Custom 一起使用。无需进一步操作。
+ 如果您已经为不同的 RDS Custom 引擎创建了客户自主管理型对称加密 KMS 密钥，可以重用相同的 KMS 密钥。无需进一步操作。
+ 如果您的账户中没有现有的客户自主管理型对称加密 KMS 密钥，请按照《AWS Key Management Service 开发人员指南》**的[创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)中的说明创建一个 KMS 密钥。
+ 如果您正在创建 CEV 或 RDS Custom 数据库实例，而您的 KMS 密钥位于其他 AWS 账户 中，请务必使用 AWS CLI。您不能将 AWS 控制台与跨账户 KMS 密钥一起使用。

**重要**  
RDS Custom 不支持 AWS 托管式 KMS 密钥。

确保您的对称加密密钥为 IAM 实例配置文件中的 `kms:Decrypt`（IAM）角色授予对 `kms:GenerateDataKey` 和 AWS Identity and Access Management 操作的访问权限。如果您的账户中有一个新的对称加密密钥，不需要进行任何更改。否则，请确保对称加密密钥的策略授予对这些操作的访问权限。

有关更多信息，请参阅 [步骤 4：为 RDS Custom for Oracle 配置 IAM](custom-setup-orcl.md#custom-setup-orcl.iam-vpc)。

#### 手动创建您的 IAM 角色和实例配置文件
<a name="custom-setup-sqlserver.iam"></a>

可以手动创建实例配置文件并使用它来启动 RDS Custom 实例。如果计划在 AWS 管理控制台中创建实例，请跳过此部分。AWS 管理控制台允许您创建实例配置文件并将其附加到 RDS Custom 数据库实例。有关更多信息，请参阅 [使用 AWS 管理控制台自动创建实例配置文件](#custom-setup-sqlserver.instanceProfileCreation)。

手动创建实例配置文件时，请将实例配置文件名称作为 `custom-iam-instance-profile` 参数传递给 `create-db-instance` CLI 命令。RDS Custom 使用与此实例配置文件关联的角色，通过运行自动化功能来管理实例。

**为 RDS Custom for SQL Server 创建 IAM 实例配置文件和 IAM 角色**

1. 创建名为 `AWSRDSCustomSQLServerInstanceRole` 的 IAM 角色，并带有信任策略，以便 Amazon EC2 可代入此角色。

1. 将 AWS 托管策略 `AmazonRDSCustomInstanceProfileRolePolicy` 添加到 `AWSRDSCustomSQLServerInstanceRole`。

1. 为名为 `AWSRDSCustomSQLServerInstanceProfile` 的 RDS Custom for SQL Server 创建 IAM 实例配置文件。

1. 将 `AWSRDSCustomSQLServerInstanceRole` 添加到实例配置文件。

##### 创建 AWSRDSCustomSQLServerInstanceRole IAM 角色
<a name="custom-setup-sqlserver.iam.create-role"></a>

以下示例将创建 `AWSRDSCustomSQLServerInstanceRole` 角色。信任策略将允许 Amazon EC2 代入该角色。

```
aws iam create-role \
    --role-name AWSRDSCustomSQLServerInstanceRole \
    --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                  "Service": "ec2.amazonaws.com"
              }
            }
          ]
        }'
```

##### 将访问策略添加到 AWSRDSCustomSQLServerInstanceRole
<a name="custom-setup-sqlserver.iam.add-policy"></a>

要提供所需的权限，请将 AWS 托管策略 `AmazonRDSCustomInstanceProfileRolePolicy` 附加到 `AWSRDSCustomSQLServerInstanceRole`。`AmazonRDSCustomInstanceProfileRolePolicy` 允许 RDS Custom 实例发送和接收消息，并执行各种自动化操作。

**注意**  
确保访问策略中的权限不受 SCP 或与实例配置文件角色关联的权限边境所限制。

以下示例将 AWS 托管策略 `AmazonRDSCustomInstanceProfileRolePolicy` 附加到 `AWSRDSCustomSQLServerInstanceRole` 角色。

```
aws iam attach-role-policy \
    --role-name AWSRDSCustomSQLServerInstanceRole \
    --policy-arn arn:aws:iam::aws:policy/AmazonRDSCustomInstanceProfileRolePolicy
```

##### 创建您的 RDS Custom for SQL Server 实例配置文件
<a name="custom-setup-sqlserver.iam.create-profile"></a>

实例配置文件是包含单个 IAM 角色的容器。RDS Custom 使用实例配置文件将角色传递给实例。

如果使用 AWS 管理控制台创建 Amazon EC2 角色，该控制台会自动创建实例配置文件，将其命名为与所创建角色相同的名称。请按如下方式创建您的实例配置文件，将其命名为 `AWSRDSCustomSQLServerInstanceProfile`。

```
aws iam create-instance-profile \
    --instance-profile-name AWSRDSCustomSQLServerInstanceProfile
```

##### 请将 AWSRDSCustomSQLServerInstanceRole 添加到您的 RDS Custom for SQL Server 实例配置文件中
<a name="custom-setup-sqlserver.iam.add-profile"></a>

将 `AWSRDSCustomInstanceRoleForRdsCustomInstance` 角色添加到先前创建的 `AWSRDSCustomSQLServerInstanceProfile` 配置文件中。

```
aws iam add-role-to-instance-profile \
    --instance-profile-name AWSRDSCustomSQLServerInstanceProfile \
    --role-name AWSRDSCustomSQLServerInstanceRole
```

#### 手动配置您的 VPC
<a name="custom-setup-sqlserver.vpc"></a>

就像 Amazon EC2 实例或 Amazon RDS 实例一样，您的 RDS Custom 数据库实例位于基于 Amazon VPC 服务的虚拟私有云 (VPC) 中。您将提供并配置自己的 VPC。因此，您将能够完全控制实例联网设置。

RDS Custom 将通信从数据库实例发送到其他 AWS 服务。确保可以从您在其中创建 RDS Custom 数据库实例的子网访问以下服务：
+ Amazon CloudWatch (`com.amazonaws.region.monitoring`)
+ Amazon CloudWatch Logs (`com.amazonaws.region.logs`)
+ Amazon CloudWatch Events (`com.amazonaws.region.events`)
+ Amazon EC2（`com.amazonaws.region.ec2` 和 `com.amazonaws.region.ec2messages`）
+ Amazon S3 (`com.amazonaws.region.s3`)
+ AWS Secrets Manager (`com.amazonaws.region.secretsmanager`)
+ AWS Systems Manager（`com.amazonaws.region.ssm` 和 `com.amazonaws.region.ssmmessages`）

如果创建多可用区部署
+ Amazon Simple Queue Service (`com.amazonaws.region.sqs`)

如果 RDS Custom 无法与必需的服务通信，它会发布以下事件：

```
Database instance in incompatible-network. SSM Agent connection not available. Amazon RDS can't connect to the dependent AWS services.
```

```
Database instance in incompatible-network. Amazon RDS can't connect to dependent AWS services. Make sure port 443 (HTTPS) allows outbound connections, and try again. "Failed to connect to the following services: s3 events"
```

为避免 `incompatible-network` 错误，请确保您的 RDS Custom 数据库实例与 AWS 服务之间通信所涉及的 VPC 组件满足以下要求：
+ 数据库实例可以在端口 443 上建立到其他 AWS 服务的出站连接。
+ VPC 允许对源自 RDS Custom 数据库实例的请求进行传入响应。
+ RDS Custom 可以正确解析每个 AWS 服务的端点的域名。

如果您已经为其他 RDS Custom 数据库引擎配置了 VPC，可以重用该 VPC 并跳过此过程。

**Topics**
+ [配置您的 VPC 安全组](#custom-setup-sqlserver.vpc.sg)
+ [为依赖项 AWS 服务配置端点](#custom-setup-sqlserver.vpc.endpoints)
+ [配置实例元数据服务](#custom-setup-sqlserver.vpc.imds)

##### 配置您的 VPC 安全组
<a name="custom-setup-sqlserver.vpc.sg"></a>

*安全组*充当 VPC 实例的虚拟防火墙，以控制入站和出站流量。RDS Custom 数据库实例在其网络接口上附加了一个用于保护该实例的安全组。请确保该安全组允许通过 HTTPS 在 RDS Custom 和其他 AWS 服务之间传输流量。可以将此安全组作为实例创建请求中的 `vpc-security-group-ids` 参数进行传递。

**为 RDS Custom 配置安全组**

1. 登录到AWS 管理控制台并打开 Amazon VPC 控制台，网址：[https://console.aws.amazon.com/vpc](https://console.aws.amazon.com/vpc)。

1. 允许 RDS Custom 使用原定设置安全组，或创建您自己的安全组。

   有关详细说明，请参阅[通过创建安全组提供对 VPC 中的数据库实例的访问](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup)。

1. 确保您的安全组允许在端口 443 上建立出站连接。RDS Custom 需要此端口来与依赖项 AWS 服务进行通信。

1. 如果您有私有 VPC 并且使用 VPC 端点，请确保与数据库实例关联的安全组允许在端口 443 上建立到 VPC 端点的出站连接。还要确保与 VPC 端点关联的安全组允许在端口 443 上建立来自数据库实例的入站连接。

   如果不允许传入连接，RDS Custom 实例将无法连接到 AWS Systems Manager 和 Amazon EC2 端点。有关更多信息，请参阅《AWS Systems Manager 用户指南》**中的[创建 Virtual Private Cloud 端点](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html)。

1. 对于 RDS Custom for SQL Server 多可用区实例，请确保与数据库实例关联的安全组允许在端口 1120 上建立与该安全组本身的入站和出站连接。这是在多可用区 RDS Custom for SQL Server 数据库实例上建立对等主机连接所必需的。

有关安全组的更多信息，请参阅 [Amazon VPC 开发人员指南](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)中的*您的 VPC 的安全组*。

##### 为依赖项 AWS 服务配置端点
<a name="custom-setup-sqlserver.vpc.endpoints"></a>

我们建议您按照以下说明为 VPC 中的每项服务添加端点。但是，您也可以使用任何其他解决方案，只要使您的 VPC 能够与 AWS 服务端点通信即可。例如，您可以使用网络地址转换 (NAT) 或 AWS Direct Connect。

**为与 RDS Custom 配合使用的 AWS 服务配置端点**

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 打开 Amazon VPC 控制台。

1. 在导航栏中，使用区域选择器来选择 AWS 区域。

1. 在导航窗格中，选择**端点**。在主窗格中，选择**创建端点**。

1. 对于 **Service category**（服务类别），选择 **AWS 服务**。

1. 对于 **Service Name**（服务名称），请选择表中显示的端点。

1. 对于 **VPC**，选择您的 VPC。

1. 对于**子网**，请从每个可用区中选择一个要包括的子网。

   VPC 端点可以跨越多个可用区。AWS 为您选择的每个子网中的 VPC 端点创建一个弹性网络接口。每个网络接口有一个域名系统 (DNS) 主机名和私有 IP 地址。

1. 对于 **Security group**（安全组），请选择或创建一个安全组。

   您可以使用安全组来控制对您的端点的访问，就像您使用防火墙一样。确保安全组允许端口 443 上来自数据库实例的入站连接。有关安全组的更多信息，请参阅 *Amazon VPC 用户指南* 中的[您的 VPC 的安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

1. 或者，您可以将策略附加到 VPC 端点。端点策略可以控制对您要连接到的 AWS 服务的访问权限。原定设置策略允许所有请求通过端点。如果您使用自定义策略，请确保策略中允许来自数据库实例的请求。

1. 选择**创建端点**。

下表说明了如何查找您的 VPC 用于出站通信所需的端点列表。


| 服务 | 端点格式 | 备注和链接 | 
| --- | --- | --- | 
|  AWS Systems Manager  |  采用以下端点格式： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)  |  有关每个区域中端点的列表，请参阅《Amazon Web Services 一般参考》**中的 [AWS Systems Manager 端点和限额](https://docs.aws.amazon.com/general/latest/gr/ssm.html)。  | 
|  AWS Secrets Manager  |  采用端点格式 `secretsmanager.region.amazonaws.com`。  |  有关每个区域中端点的列表，请参阅《Amazon Web Services 一般参考》**中的 [AWS Secrets Manager 端点和限额](https://docs.aws.amazon.com/general/latest/gr/asm.html)。  | 
|  Amazon CloudWatch  |  采用以下端点格式： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)  | 有关每个区域中的端点列表，请参阅：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html) | 
|  Amazon EC2  |  采用以下端点格式： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)  |  有关每个区域中端点的列表，请参阅《Amazon Web Services 一般参考》**中的 [Amazon Elastic Compute Cloud 端点和限额](https://docs.aws.amazon.com/general/latest/gr/ec2-service.html)。  | 
|  Amazon S3  |  采用端点格式 `s3.region.amazonaws.com`。  |  有关每个区域中端点的列表，请参阅《Amazon Web Services 一般参考》**中的 [Amazon Simple Storage Service 端点和限额](https://docs.aws.amazon.com/general/latest/gr/s3.html)。 要了解 Amazon S3 的网关端点的更多信息，请参阅《Amazon VPC 开发人员指南**》中的 [Amazon S3 端点](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html)。 要了解如何创建访问点，请参阅《Amazon VPC 开发人员指南**》中的[创建访问点](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/access-points-create-ap.html)。 要了解如何为 Amazon S3 创建网关端点，请参阅[网关 VPC 端点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html)。  | 
|  Amazon Simple Queue Service  | 采用端点格式 sqs.region.amazonaws.com | 要查看每个区域中端点的列表，请参阅 [Amazon Simple Storage Service 端点和限额](https://docs.aws.amazon.com/general/latest/gr/sqs-service.html) | 

##### 配置实例元数据服务
<a name="custom-setup-sqlserver.vpc.imds"></a>

请确保您的实例可以执行以下操作：
+ 可使用 Instance Metadata Service Version 2 (IMDSv2) 来访问实例元数据服务。
+ 允许通过端口 80 (HTTP) 到 IMDS 链接 IP 地址的出站通信。
+ 从 `http://169.254.169.254` IMDSv2 链接请求实例元数据。

有关更多信息，请参阅《Amazon EC2 用户指南》**中的[使用 IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)。

## 跨实例限制
<a name="custom-setup-sqlserver.cross-instance-restriction"></a>

当您按照上述步骤创建实例配置文件时，系统会使用 AWS 托管策略 `AmazonRDSCustomInstanceProfileRolePolicy` 向 RDS Custom 提供实现实例管理和监控自动化所需的权限。该托管策略可确保这些权限仅允许访问 RDS Custom 运行自动化功能所需的资源。建议使用该托管策略来支持新功能并满足安全要求，这些要求会自动应用于现有的实例配置文件，无需人工干预。有关更多信息，请参阅[AWS 托管策略：AmazonRDSCustomInstanceProfileRolePolicy](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-security-iam-awsmanpol.html#rds-security-iam-awsmanpol-AmazonRDSCustomInstanceProfileRolePolicy)。

`AmazonRDSCustomInstanceProfileRolePolicy` 托管策略将实例配置文件限制为具有跨账户访问权限，但它可能允许在同一账户内跨 RDS Custom 实例访问某些 RDS Custom 托管资源。根据您的要求，您可以使用权限边界进一步限制跨实例访问。权限边界策略定义基于身份的策略可以授予实体的最大权限，但它本身并不授予权限。有关更多信息，请参阅[评估有边界的有效权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html#access_policies_boundaries-eval-logic)。

例如，以下边界策略限制实例配置文件角色对特定 AWS KMS 密钥的访问权限，并限制跨使用不同 AWS KMS 密钥的实例对 RDS Custom 托管式资源的访问权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyOtherKmsKeyAccess",
            "Effect": "Deny",
            "Action": "kms:*",
            "NotResource": "arn:aws:kms:us-east-1:111122223333:key/KMS_key_ID"
        }
    ]
}
```

------

**注意**  
请确保权限边界不会阻止 `AmazonRDSCustomInstanceProfileRolePolicy` 向 RDS Custom 授予的任何权限。

# 对于 RDS Custom for SQL Server 使用自带媒体
<a name="custom-sqlserver.byom"></a>

RDS Custom for SQL Server 支持两种许可模式：附带许可证（LI）和自带媒体（BYOM）。

**利用 BYOM，您可以执行以下操作：**

1. 在 AWS EC2 Windows AMI 上提供并安装您自己的 Microsoft SQL Server 二进制文件以及支持的累积更新（CU）。

1. 将 AMI 另存为黄金镜像，该镜像是可用于创建自定义引擎版本（CEV）的模板。

1. 从您的黄金镜像创建 CEV。

1. 使用 CEV 创建新的 RDS Custom for SQL Server 数据库实例。

然后，Amazon RDS 会为您管理您的数据库实例。

**注意**  
如果您还有一个附带许可证（LI）的 RDS Custom for SQL Server 数据库实例，则无法将此数据库实例中的 SQL Server 软件与 BYOM 一起使用。您必须将自己的 SQL Server 二进制文件放入 BYOM 中。

## 对 RDS Custom for SQL Server 使用 BYOM 的要求
<a name="custom-sqlserver.byom.requirements"></a>

使用 RDS Custom for SQL Server 的自定义引擎版本的相同一般要求也适用于 BYOM。有关更多信息，请参阅 [RDS Custom for SQL Server CEV 的要求](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.Requirements)。

使用 BYOM 时，请确保满足以下附加要求：
+ 使用以下支持的版本之一：SQL Server 2022 或 2019 企业版、标准版或开发版。
+ 将 SQL Server sysadmin（SA）服务器角色权限授予 `NT AUTHORITY\SYSTEM`。
+ 打开 TCP 端口 1433 和 UDP 端口 1434 以允许 SSM 连接。

## 对 RDS Custom for SQL Server 使用 BYOM 的限制
<a name="custom-sqlserver.byom.limitations"></a>

RDS Custom for SQL Server 的相同一般限制也适用于 BYOM。有关更多信息，请参阅 [Amazon RDS Custom for SQL Server 的要求和限制](custom-reqs-limits-MS.md)。

对于 BYOM，以下附加限制适用：
+ 仅支持原定设置 SQL Server 实例（MSSQLSERVER）。不支持已命名的 SQL Server 实例。RDS Custom for SQL Server 仅检测和监控原定设置 SQL Server 实例。
+ 每个 AMI 仅支持 SQL Server 的单一安装。不支持多次安装不同的 SQL Server 版本。
+ BYOM 不支持 SQL Server Web 版本。
+ BYOM 不支持 SQL Server 各版本的评估版。安装 SQL Server 时，请不要选中使用评估版的复选框。
+ 功能可用性和支持因每个数据库引擎的特定版本以及 AWS 区域而异。有关更多信息，请参阅[RDS Custom for SQL Server CEV 的区域可用性](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.RegionVersionAvailability)和[RDS Custom for SQL Server CEV 的版本支持](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.VersionSupport)。

## 使用 BYOM 创建 RDS Custom for SQL Server 数据库实例
<a name="custom-sqlserver.byom.creating"></a>

要使用 BYOM 准备和创建 RDS Custom for SQL Server 数据库实例，请参阅[使用自带媒体（BYOM）准备 CEV](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.byom)。

# 使用适用于 RDS Custom for SQL Server 的自定义引擎版本
<a name="custom-cev-sqlserver"></a>

RDS Custom for SQL Server 的*自定义引擎版本（CEV）*是包括 Microsoft SQL Server 的亚马逊云机器镜像（AMI）。

**CEV 工作流程的基本步骤如下：**

1. 选择 AWS EC2 Windows AMI 以用作 CEV 的基础镜像。您可以选择使用预安装的 Microsoft SQL Server，也可以自带媒体以自行安装 SQL Server。

1. 在操作系统（OS）上安装其他软件，并自定义操作系统和 SQL Server 的配置以满足您的企业需求。

1. 将 AMI 另存为黄金镜像

1. 从黄金镜像创建自定义引擎版本（CEV）。

1. 使用 CEV 创建新的 RDS Custom for SQL Server 数据库实例。

然后，Amazon RDS 会为您管理这些数据库实例。

CEV 允许您维护操作系统和数据库的首选基准配置。使用 CEV 可确保主机配置（如任何第三方代理安装或其他操作系统自定义）在 RDS Custom for SQL Server 数据库实例上持续存在。使用 CEV，您可以使用相同配置快速部署 RDS Custom for SQL Server 数据库实例集。

**Topics**
+ [正在准备创建适用于 RDS Custom for SQL Server 的 CEV](custom-cev-sqlserver.preparing.md)
+ [创建适用于 RDS Custom for SQL Server 的 CEV](custom-cev-sqlserver.create.md)
+ [修改适用于 RDS Custom for SQL Server 的 CEV](custom-cev-sqlserver-modifying.md)
+ [查看 Amazon RDS Custom for SQL Server 的 CEV 详细信息](custom-viewing-sqlserver.md)
+ [删除适用于 RDS Custom for SQL Server 的 CEV](custom-cev-sqlserver-deleting.md)

# 正在准备创建适用于 RDS Custom for SQL Server 的 CEV
<a name="custom-cev-sqlserver.preparing"></a>

您可以使用包含预安装、附带许可证（LI）的 Microsoft SQL Server 的亚马逊机器映像（AMI）来创建 CEV，也可以使用安装您自己的 SQL Server 安装媒体（BYOM）的 AMI 来创建 CEV。

## 准备 CEV
<a name="custom-cev-sqlserver.preparing.types"></a>

使用以下过程，通过自带媒体（BYOM）或预安装的 Microsoft SQL Server（LI）创建 CEV。

### 使用自带媒体（BYOM）准备 CEV
<a name="custom-cev-sqlserver.preparing.byom"></a>

以下步骤以 **Windows Server 2019 Base** 的 AMI 作为示例。

**使用 BYOM 创建 CEV**

1. 从 Amazon EC2 控制台控制中，选择**启动实例**。

1. 对于**名称**，输入实例的名称。

1. 在“快速入门”下，选择 **Windows**。

1. 选择 **Microsoft Windows Server 2019 Base**。

1. 选择适当的实例类型、键对、网络和存储设置，然后启动实例。

1. 启动或创建 EC2 实例后，请确保从步骤 4 中选择了正确的 Windows AMI：

   1. 在 Amazon EC2 控制台选择 EC2 实例。

   1. 在**详细信息**部分，检查**使用情况操作**并确保将其设置为 **RunInstances:0002**。  
![\[将 RunInstances:0002 用于 BYOM 的 Windows AMI\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/cev-sqlserver-byom-ec2runinstances.png)

1. 登录 EC2 实例并将您的 SQL Server 安装媒体复制到该实例。
**注意**  
如果您使用 SQL Server 开发版构建 CEV，则可能需要使用 [Microsoft Visual Studio 订阅](https://my.visualstudio.com/Downloads?q=sqlserver%20developer)获取安装媒体。

1. 安装 SQL Server。务必执行以下操作：

   1. 查看[对 RDS Custom for SQL Server 使用 BYOM 的要求](custom-sqlserver.byom.md#custom-sqlserver.byom.requirements)和[RDS Custom for SQL Server CEV 的版本支持](#custom-cev-sqlserver.preparing.VersionSupport)。

   1. 将实例根目录设置为默认值 `C:\Program Files\Microsoft SQL Server\`。不要更改此目录。

   1. 将 SQL Server 数据库引擎账户名称设置为 `NT Service\MSSQLSERVER` 或 `NT AUTHORITY\NETWORK SERVICE`。

   1. 将 SQL Server 启动模式设置为**手动**。

   1. 将 SQL Server 身份验证模式选择为**混合**。

   1. 保留默认数据目录和 TempDB 位置的当前设置。

1. 将 SQL Server sysadmin（SA）服务器角色权限授予 `NT AUTHORITY\SYSTEM`：

   ```
   1. USE [master]
   2. GO
   3. EXEC master..sp_addsrvrolemember @loginame = N'NT AUTHORITY\SYSTEM' , @rolename = N'sysadmin'
   4. GO
   ```

1. 安装其他软件，或自定义操作系统和数据库配置以满足您的要求。

1. 在 EC2 实例上运行 Sysprep。有关更多信息，请参阅[使用 Windows Sysprep 创建 Amazon EC2 AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-create-win-sysprep.html)。

1. 保存包含您已安装的 SQL Server 版本、其他软件和自定义项的 AMI。这将是您的黄金镜像。

1. 通过提供您创建的映像的 AMI ID 来创建新的 CEV。有关详细步骤，请参阅[创建适用于 RDS Custom for SQL Server 的 CEV](custom-cev-sqlserver.create.md)。

1. 使用 CEV 创建新的 RDS Custom for SQL Server 数据库实例。有关详细步骤，请参阅[从 CEV 创建 RDS Custom for SQL Server 数据库实例](custom-cev-sqlserver.create.md#custom-cev-sqlserver.create.newdbinstance)。

### 使用预安装的 SQL Server（LI）准备 CEV
<a name="custom-cev-sqlserver.preparing.licenseincluded"></a>

使用预安装的 Microsoft SQL Server（LI）创建 CEV 的以下步骤以 **SQL Server CU20** 版本号为 `2023.05.10` 的 AMI 作为示例。创建 CEV 时，请选择具有最新版本号的 AMI。这可以确保您使用的是支持的 Windows Server 和 SQL Server 版本 [具有最新的累积更新（CU）]。

**使用预安装的 Microsoft SQL Server（LI）创建 CEV**

1. 选择最新可用的 AWS EC2 Windows 亚马逊机器映像（AMI），其中带有附带许可证（LI）的 Microsoft Windows Server 和 SQL Server。

   1. 在 [Windows AMI 版本历史记录](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-windows-ami-version-history.html)中搜索 **CU20**。

   1. 记下版本号。对于 SQL Server 2019 CU20，版本号为 `2023.05.10`。  
![\[SQL Server 2019 CU20 的 AMI 版本历史记录结果。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/rds_custom_sqlserver_cev_find_ami_history_li_cu20.png)

   1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

   1. 在 Amazon EC2 控制台的左侧导航窗格中，选择 **Images**（映像），然后选择 **AMI**。

   1. 选择**公有映像**。

   1. 在搜索框中输入 `2023.05.10`。随即出现 AMI 的列表。

   1. 在搜索框中输入 `Windows_Server-2019-English-Full-SQL_2019` 以筛选结果。应显示以下结果。  
![\[使用 SQL Server 2019 CU20 时支持的 AMI。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/rds_custom_sqlserver_cev_find_ami_li_cu.png)

   1. 选择要使用的 AMI 以及 SQL Server 版本。

1. 从您选择的 AMI 创建或启动 EC2 实例。

1. 登录 EC2 实例并安装其他软件，或自定义操作系统和数据库配置以满足您的要求。

1. 在 EC2 实例上运行 Sysprep。有关使用 Sysprep 准备 AMI 的更多信息，请参阅[使用 Sysprep 创建标准化的亚马逊机器映像（AMI）](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html#sysprep-using-ec2launchv2)。

1. 保存包含您已安装的 SQL Server 版本、其他软件和自定义项的 AMI。这将是您的黄金镜像。

1. 通过提供您创建的映像的 AMI ID 来创建新的 CEV。有关创建 CEV 的详细步骤，请参阅 [创建适用于 RDS Custom for SQL Server 的 CEV](custom-cev-sqlserver.create.md)。

1. 使用 CEV 创建新的 RDS Custom for SQL Server 数据库实例。有关详细步骤，请参阅[从 CEV 创建 RDS Custom for SQL Server 数据库实例](custom-cev-sqlserver.create.md#custom-cev-sqlserver.create.newdbinstance)。

## RDS Custom for SQL Server CEV 的区域可用性
<a name="custom-cev-sqlserver.preparing.RegionVersionAvailability"></a>

以下 AWS 区域中提供对 RDS Custom for SQL Server 的自定义引擎版本（CEV）的支持：
+ 美国东部（俄亥俄州）
+ 美国东部（弗吉尼亚州北部）
+ 美国西部（俄勒冈州）
+ 美国西部（北加利福尼亚）
+ 亚太地区（孟买）
+ 亚太地区（大阪）
+ 亚太地区（首尔）
+ 亚太地区（新加坡）
+ 亚太地区（悉尼）
+ 亚太地区（东京）
+ 加拿大（中部）
+ 欧洲地区（法兰克福）
+ 欧洲地区（爱尔兰）
+ 欧洲地区（伦敦）
+ 欧洲地区（巴黎）
+ 欧洲地区（斯德哥尔摩）
+ 南美洲（圣保罗）

## RDS Custom for SQL Server CEV 的版本支持
<a name="custom-cev-sqlserver.preparing.VersionSupport"></a>

以下 AWS EC2 Windows AMI 支持创建适用于 RDS Custom for SQL Server 的 CEV：
+ 对于使用预安装媒体的 CEV，带有附带许可证（LI）的 Microsoft Windows Server 2019（操作系统）和 SQL Server 2022 或 2019 的 AWS EC2 Windows AMI
+ 对于使用自带媒体（BYOM）的 CEV，带有 Microsoft Windows Server 2019（操作系统）的 AWS EC2 Windows AMI

以下操作系统（OS）和数据库版本支持创建适用于 RDS Custom for SQL Server 的 CEV：
+ 对于使用预装媒体的 CEV：
  + 带有 CU9、CU13、CU14-GDR、CU15-GDR、CU16、CU17、CU18、CU19、CU19-GDR、CU20-GDR、CU21-GDR、CU22 和 CU22-GDR 的 SQL Server 2022 企业版、标准版或 Web 版。
  + 带有 CU8、CU17、CU18、CU20、CU24、CU26、CU28-GDR、CU29-GDR、CU30、CU32 和 CU32-GDR 的 SQL Server 2019 企业版、标准版或 Web 版。
+ 对于使用自带媒体（BYOM）的 CEV，
  + 带有 CU9、CU13、CU14-GDR、CU15-GDR、CU16、CU17、CU18、CU19、CU19-GDR、CU20-GDR、CU21-GDR、CU22 和 CU22-GDR 的 SQL Server 2022 企业版、标准版或开发版。
  + 带有 CU8、CU17、CU18、CU20、CU24、CU26、CU28-GDR、CU29-GDR、CU30、CU32 和 CU32-GDR 的 SQL Server 2019 企业版、标准版或开发版。
+ 对于使用预安装媒体或自带媒体（BYOM）的 CEV，Windows Server 2019 是唯一支持的操作系统。

有关更多信息，请参阅[AWS Windows AMI 版本历史记录](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ec2-windows-ami-version-history.html)。

## RDS Custom for SQL Server CEV 的要求
<a name="custom-cev-sqlserver.preparing.Requirements"></a>

以下要求应用于创建适用于 RDS Custom for SQL Server 的 CEV：
+ 用于创建 CEV 的 AMI 必须基于 RDS Custom for SQL Server 支持的操作系统和数据库配置。有关支持的配置的更多信息，请参阅 [Amazon RDS Custom for SQL Server 的要求和限制](custom-reqs-limits-MS.md)。
+ CEV 必须具有唯一的名称。您无法创建与现有 CEV 同名的 CEV。
+ 必须使用 SQL Server 的以下命名模式命名 CEV：*主要版本 \$1 次要版本 \$1 自定义字符串*。*主要版本 \$1 次要版本*必须与 AMI 提供的 SQL Server 版本相匹配。例如，您可以将带有 SQL Server 2019 CU17 的 AMI 命名为 **15.00.4249.2.my\$1cevtest**。
+ 您必须使用 Sysprep 准备 AMI。有关使用 Sysprep 准备 AMI 的更多信息，请参阅[使用 Sysprep 创建标准化的亚马逊机器映像（AMI）](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-create-win-sysprep.html)。
+ 您负责维护 AMI 的生命周期。从 CEV 创建的 RDS Custom for SQL Server 数据库实例不存储 AMI 的副本。它保持一个指向您用于创建 CEV 的 AMI 的指针。AMI 必须存在，RDS Custom for SQL Server 数据库实例才能保持可运行状态。

## RDS Custom for SQL Server CEV 的限制
<a name="custom-cev-sqlserver.preparing.Limitations"></a>

以下限制适用于 RDS Custom for SQL Server 的自定义引擎版本：
+ 如果存在与 CEV 关联的资源（如数据库实例或数据库快照），则无法将其删除。
+ 要创建 RDS Custom for SQL Server 数据库实例，CEV 的状态必须为 `pending-validation`、`available`、`failed` 或 `validating`。如果 CEV 状态为 `incompatible-image-configuration`，则无法使用此 CEV 创建 RDS Custom for SQL Server 数据库实例。
+ 要修改 RDS Custom for SQL Server 数据库实例以使用新的 CEV，CEV 的状态必须为 `available`。
+ 无法从现有 RDS Custom for SQL Server 数据库实例创建 AMI 或 CEV。
+ 您无法修改现有 CEV 以使用其他 AMI。但是，您可以修改 RDS Custom for SQL Server 数据库实例以使用不同的 CEV。有关更多信息，请参阅 [修改 RDS Custom for SQL Server 数据库实例](custom-managing.modify-sqlserver.md)。
+ 不支持使用与创建数据库实例时提供的 KMS 密钥不同的客户自主管理型 KMS 密钥来对 AMI 或 CEV 进行加密。
+ 不支持 CEV 的跨区域副本。
+ 不支持 CEV 的跨账户副本。
+ 删除 CEV 后，无法还原或恢复它。但是，您可以从同一 AMI 创建新的 CEV。
+ RDS Custom for SQL Server 数据库实例将您的 SQL Server 数据库文件存储在 *D:\$1* 驱动器中。与 CEV 关联的 AMI 应将 Microsoft SQL Server 系统数据库文件存储在 *C:\$1* 驱动器中。
+ RDS Custom for SQL Server 数据库实例保留您对 SQL Server 所做的配置更改。在从 CEV 创建的正在运行的 RDS Custom for SQL Server 数据库实例上对操作系统所做的任何配置更改都不会保留。如果您需要对操作系统进行永久配置更改并将其保留为新的基准配置，请创建新的 CEV 并修改数据库实例以使用新的 CEV。
**重要**  
修改 RDS Custom for SQL Server 数据库实例以使用新的 CEV 是一项离线操作。您可以立即执行修改，也可以安排在每周维护时段内进行修改。
+ 当您修改 CEV 时，Amazon RDS 不会将这些修改推送到任何关联的 RDS Custom for SQL Server 数据库实例。必须修改每个 RDS Custom for SQL Server 数据库实例，才能使用新的或更新的 CEV。有关更多信息，请参阅 [修改 RDS Custom for SQL Server 数据库实例](custom-managing.modify-sqlserver.md)。
+ 
**重要**  
如果删除 CEV 使用的 AMI，则任何可能需要更换主机的修改（例如规模计算）都将失败。然后，RDS Custom for SQL Server 数据库实例将放在 RDS 支持边界之外。建议您避免删除与 CEV 关联的任何 AMI。

# 创建适用于 RDS Custom for SQL Server 的 CEV
<a name="custom-cev-sqlserver.create"></a>

您可以使用 AWS 管理控制台或 AWS CLI 创建自定义引擎版本（CEV）。然后，您可以使用 CEV 创建 RDS Custom for SQL Server 实例。

确保 Amazon 机器映像（AMI）与您的 CEV 位于同一 AWS 账户和区域中。否则，创建 CEV 的过程将失败。

有关更多信息，请参阅 [为 Amazon RDS Custom for SQL Server 创建并连接到数据库实例](custom-creating-sqlserver.md)。

**重要**  
对于使用预安装的 SQL Server 创建的 AMI 和使用自带媒体（BYOM）创建的 AMI，创建 CEV 的步骤相同。

## 控制台
<a name="custom-cev-sqlserver.create.console"></a>

**要创建 CEV**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Custom engine versions**（自定义引擎版本）。

   **Custom engine versions**（自定义引擎版本）页面显示了当前存在的所有 CEV。如果您尚未创建任何 CEV，则该表为空。

1. 选择 **Create custom engine version**（创建自定义引擎版本）。

1. 对于 **Engine type**（引擎类型），选择 **Microsoft SQL Server**。

1. 对于**版本**，请选择要使用的数据库引擎版本。

1. 对于 **Major version**（主要版本），选择在 AMI 上安装的主引擎主版本。

1. 在 **Version details**（版本详细信息）中，在 **Custom engine version name**（自定义引擎版本名称）中输入有效的名称。

   名称格式为 `major-engine-version.minor-engine-version.customized_string`。您可以使用 1–50 位字母数字字符、下划线、短划线和句点。例如，您可以输入名称 **15.00.4249.2.my\$1cevtest**。

   或者，选择输入 CEV 的描述。

1. 对于 **Installation Media**（安装介质），浏览或输入您想要从中创建 CEV 的 AMI ID。

1. 在 **Tags** （标签）部分中，添加任何标签以标识 CEV。

1. 选择 **Create custom engine version**（创建自定义引擎版本）。

**Custom engine versions**（自定义引擎版本）页面显示。您的 CEV 显示状态 **pending-validation**（待验证）

## AWS CLI
<a name="custom-cev-sqlserver.create.CEV"></a>

要使用 AWS CLI 创建 CEV，请运行 [create-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/create-custom-db-engine-version.html) 命令。

以下选项为必填：
+ `--engine`
+ `--engine-version`
+ `--image-id`

您还可以指定以下选项：
+ `--description`
+ `--region`
+ `--tags`

下面的示例创建了一个名为 `15.00.4249.2.my_cevtest` 的 CEV。确保 CEV 的名称以主要引擎版本号开头。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds create-custom-db-engine-version \
2.     --engine custom-sqlserver-ee \
3.     --engine-version 15.00.4249.2.my_cevtest \
4.     --image-id ami-0r93cx31t5r596482 \                    
5.     --description "Custom SQL Server EE 15.00.4249.2 cev test"
```
以下部分输出显示了引擎、参数组和其他信息。  

```
 1. "DBEngineVersions": [
 2.     {
 3.     "Engine": "custom-sqlserver-ee",
 4.     "MajorEngineVersion": "15.00",
 5.     "EngineVersion": "15.00.4249.2.my_cevtest",
 6.     "DBEngineDescription": "Microsoft SQL Server Enterprise Edition for RDS Custom for SQL Server",
 7.     "DBEngineVersionArn": "arn:aws:rds:us-east-1:<my-account-id>:cev:custom-sqlserver-ee/15.00.4249.2.my_cevtest/a1234a1-123c-12rd-bre1-1234567890",
 8.     "DBEngineVersionDescription": "Custom SQL Server EE 15.00.4249.2 cev test",
 9.                                                       
10.     "Image": [
11.         "ImageId": "ami-0r93cx31t5r596482",
12.         "Status": "pending-validation"
13.      ],
14.     "CreateTime": "2022-11-20T19:30:01.831000+00:00",
15.     "SupportsLogExportsToCloudwatchLogs": false,
16.     "SupportsReadReplica": false,
17.     "Status": "pending-validation",
18.     "SupportsParallelQuery": false,
19.     "SupportsGlobalDatabases": false,
20.     "TagList": []
21.     }
22. ]
```

如果创建 CEV 的过程失败，则 RDS Custom for SQL Server 会发出 `RDS-EVENT-0198` 以及该消息 `Creation failed for custom engine version major-engine-version.cev_name`。该消息包括有关失败的详细信息，例如，事件打印丢失的文件。要查找有关 CEV 创建问题的故障排除建议，请参阅 [RDS Custom for SQL Server 的 CEV 错误故障排除](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.cev)。

## 从 CEV 创建 RDS Custom for SQL Server 数据库实例
<a name="custom-cev-sqlserver.create.newdbinstance"></a>

成功创建 CEV 后，**CEV status**（CEV 状态）将显示 `pending-validation`。现在，您可以使用 CEV 创建新的 RDS Custom for SQL Server 数据库实例。要从 CEV 创建新的 RDS Custom for SQL Server 数据库实例，请参阅 [创建 RDS Custom for SQL Server 数据库实例](custom-creating-sqlserver.md#custom-creating-sqlserver.create)。

## CEV 的生命周期
<a name="custom-cev-sqlserver.create.lifecycle"></a>

CEV 生命周期包括以下状态。


****  

| CEV 状态 | 描述 | 故障排除建议 | 
| --- | --- | --- | 
| `pending-validation` | CEV 已创建，正在等待关联 AMI 的验证。CEV 将保持为 `pending-validation`，直到从中创建 RDS Custom for SQL Server 数据库实例。 | 如果没有现有任务，则从 CEV 创建一个新的 RDS Custom for SQL Server 数据库实例。创建 RDS Custom for SQL Server 数据库实例时，系统尝试验证 CEV 的关联 AMI。  | 
| `validating` | 基于新的 CEV 创建 RDS Custom for SQL Server 数据库实例的任务正在进行中。创建 RDS Custom for SQL Server 数据库实例时，系统尝试验证 CEV 的关联 AMI。 | 等待现有 RDS Custom for SQL Server 数据库实例的创建任务完成。您可以使用 RDS EVENTS 控制台查看详细的事件消息以进行故障排除。  | 
| `available` | 已成功验证 CEV。成功从 CEV 创建 RDS Custom for SQL Server 数据库实例后，CEV 将进入 `available` 状态。 | CEV 不需要任何额外的验证。它可用于创建其他 RDS Custom for SQL Server 数据库实例或修改现有实例。 | 
| `inactive` | CEV 已修改为非活动状态。 | 您无法使用此 CEV 创建或升级 RDS Custom 数据库实例。此外，您无法使用此 CEV 还原数据库快照以创建新的 RDS Custom 数据库实例。有关如何将状态更改为 `ACTIVE` 的信息，请参阅 [修改适用于 RDS Custom for SQL Server 的 CEV](custom-cev-sqlserver-modifying.md)。 | 
| `failed` | 此 CEV 的创建数据库实例步骤在可验证 AMI 之前失败。或者，CEV 使用的底层 AMI 不处于可用状态。 | 排查系统无法创建数据库实例的根本原因。查看详细的错误消息并尝试再次创建新的数据库实例。确保 CEV 使用的底层 AMI 处于可用状态。 | 
| `incompatible-image-configuration` | 验证 AMI 时出错。 | 查看错误的技术详细信息。您无法再次尝试使用此 CEV 验证 AMI。查看以下部分：建议： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-cev-sqlserver.create.html) 使用正确的信息创建新的 CEV。 如果需要，使用支持的 AMI 创建一个新的 EC2 实例，并在其上运行 Sysprep 进程。  | 

# 修改适用于 RDS Custom for SQL Server 的 CEV
<a name="custom-cev-sqlserver-modifying"></a>

您可以使用 AWS 管理控制台 或 AWS CLI 修改 CEV。您可以修改 CEV 描述或其可用性状态。您的 CEV 具有以下状态值之一：
+ `available` – 您可以使用此 CEV 创建新的 RDS Custom 数据库实例或升级数据库实例。这是新创建的 CEV 的原定设置状态。
+ `inactive` – 您无法使用此 CEV 创建或升级 RDS Custom 数据库实例。使用此 CEV，您无法还原数据库快照以创建新的 RDS Custom 数据库实例。

您可以将 CEV 状态从 `available` 更改为 `inactive` 或从 `inactive` 更改为 `available`。您可以将状态更改为 `INACTIVE`，以防止意外使用 CEV 或使已停止的 CEV 有资格再次使用。

## 控制台
<a name="custom-cev-sqlserver-modifying.console"></a>

**要修改 CEV**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Custom engine versions**（自定义引擎版本）。

1. 选择要修改其描述或状态的 CEV。

1. 对于 **Actions**（操作），选择 **Modify**（修改）。

1. 进行以下任何更改：
   + 对于 **CEV status settings**（CEV 状态设置），选择新的可用状态。
   + 对于 **Version description**（版本描述），输入新的描述。

1. 选择 **Modify CEV**（修改 CEV）。

   如果 CEV 正在使用中，控制台将显示 **You can't modify the CEV status**（您不能修改 CEV 状态）。修复问题，然后重试。

**Custom engine versions**（自定义引擎版本）页面显示。

## AWS CLI
<a name="custom-cev-sqlserver-modifying.cli"></a>

要通过使用 AWS CLI 修改 CEV，请运行 [modify-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-custom-db-engine-version.html) 命令。您可以通过运行 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 命令查找要修改的 CEV。

以下选项为必填：
+ `--engine`
+ `--engine-version cev`，其中 *`cev`* 是要修改的自定义引擎版本的名称
+ `--status`` status`，其中 *`status`* 是您希望分配给 CEV 的可用状态。

以下示例将名为 `15.00.4249.2.my_cevtest` 的 CEV 从当前状态更改为 `inactive`。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds modify-custom-db-engine-version \
2.     --engine custom-sqlserver-ee \ 
3.     --engine-version 15.00.4249.2.my_cevtest \
4.     --status inactive
```
对于 Windows：  

```
1. aws rds modify-custom-db-engine-version ^
2.     --engine custom-sqlserver-ee ^
3.     --engine-version 15.00.4249.2.my_cevtest ^
4.     --status inactive
```

要修改 RDS Custom for SQL Server 数据库实例以使用新的 CEV，请参阅[修改 RDS Custom for SQL Server 数据库实例以使用新 CEV](custom-cev-sqlserver-modifying-dbinstance.md)。

# 修改 RDS Custom for SQL Server 数据库实例以使用新 CEV
<a name="custom-cev-sqlserver-modifying-dbinstance"></a>

您可以修改现有的 RDS Custom for SQL Server 数据库实例以使用不同的 CEV。您可以进行的更改包括：
+ 更改 CEV
+ 更改数据库实例类
+ 更改备份保留期和备份时段
+ 更改维护时段

## 控制台
<a name="custom-cev-sqlserver-modifying-dbinstance.CON"></a>

**要修改 RDS Custom for SQL Server 数据库实例**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择要修改的数据库实例。

1. 选择**修改**。

1. 根据需要进行以下更改：

   1. 对于 **DB engine version**（数据库引擎版本），请选择不同的 CEV。

   1. 更改 **DB instance class**（数据库实例类）的值。有关支持的类，请参阅 [RDS Custom for SQL Server 的数据库实例类支持](custom-reqs-limits.instancesMS.md)。

   1. 更改 **Backup retention period**（备份保留期）的值。

   1. 对于 **Backup window**（备份时段），设置 **Start time**（开始时间）和 **Duration**（持续时间）的值。

   1. 对于 **DB instance maintenance window**（数据库实例维护时段），设置 **Start day**（开始日）、**Start time**（开始时间）和 **Duration**（持续时间）的值。

1. 选择**继续**。

1. 选择 **Apply immediately**（立即应用）或 **Apply during the next scheduled maintenance window**（在下一个计划的维护时段内应用）。

1. 选择**修改数据库实例**。
**注意**  
将数据库实例从一个 CEV 修改为另一个 CEV 时，例如，在升级次要版本时，SQL Server 系统数据库（包括其数据和配置）将在当前 RDS Custom for SQL Server 数据库实例中持久存在。

## AWS CLI
<a name="custom-cev-sqlserver-modifying-dbinstance.CLI"></a>

要使用 AWS CLI 修改数据库实例以使用不同的 CEV，请运行 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-custom-db-engine-version.html) 命令。

以下选项为必填：
+ `--db-instance-identifier`
+ `--engine-version cev`，其中 *`cev`* 是要将数据库实例更改为的自定义引擎版本的名称。

以下示例将名为 `my-cev-db-instance` 的数据库实例修改为使用名为 `15.00.4249.2.my_cevtest_new` 的 CEV 并立即应用更改。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier my-cev-db-instance \ 
3.     --engine-version 15.00.4249.2.my_cevtest_new \
4.     --apply-immediately
```
对于 Windows：  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier my-cev-db-instance ^
3.     --engine-version 15.00.4249.2.my_cevtest_new ^
4.     --apply-immediately
```

# 查看 Amazon RDS Custom for SQL Server 的 CEV 详细信息
<a name="custom-viewing-sqlserver"></a>

您可以使用 AWS 管理控制台或 AWS CLI 查看有关 CEV 的详细信息。

## 控制台
<a name="custom-viewing-sqlserver.console"></a>

**查看 CEV 详细信息**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Custom engine versions**（自定义引擎版本）。

   **Custom engine versions**（自定义引擎版本）页面显示了当前存在的所有 CEV。如果您尚未创建任何 CEV，则该页面为空。

1. 选择要查看的 CEV 的名称。

1. 选择 **Configuration**（配置）以查看详细信息。  
![\[查看 CEV 的配置详细信息。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/rds_custom_sqlserver_cev_viewdetails.PNG)

## AWS CLI
<a name="custom-viewing-sqlserver.CEV"></a>

要通过使用 AWS CLI 查看有关 CEV 的详细信息，请运行 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 命令。

您还可以指定以下选项：
+ `--include-all`，以查看具有任何生命周期状态的所有 CEV。如果没有 `--include-all` 选项，则只会返回处于 `available` 生命周期状态的 CEV。

```
aws rds describe-db-engine-versions --engine custom-sqlserver-ee --engine-version 15.00.4249.2.my_cevtest --include-all
{
    "DBEngineVersions": [
        {
            "Engine": "custom-sqlserver-ee",
            "MajorEngineVersion": "15.00",
            "EngineVersion": "15.00.4249.2.my_cevtest",
            "DBParameterGroupFamily": "custom-sqlserver-ee-15.0",
            "DBEngineDescription": "Microsoft SQL Server Enterprise Edition for custom RDS",
            "DBEngineVersionArn": "arn:aws:rds:us-east-1:{my-account-id}:cev:custom-sqlserver-ee/15.00.4249.2.my_cevtest/a1234a1-123c-12rd-bre1-1234567890",
            "DBEngineVersionDescription": "Custom SQL Server EE 15.00.4249.2 cev test",
            "Image": {
                "ImageId": "ami-0r93cx31t5r596482",
                "Status": "pending-validation"
            },
            "DBEngineMediaType": "AWS Provided",
            "CreateTime": "2022-11-20T19:30:01.831000+00:00",
            "ValidUpgradeTarget": [],
            "SupportsLogExportsToCloudwatchLogs": false,
            "SupportsReadReplica": false,
            "SupportedFeatureNames": [],
            "Status": "pending-validation",
            "SupportsParallelQuery": false,
            "SupportsGlobalDatabases": false,
            "TagList": [],
            "SupportsBabelfish": false
        }
    ]
}
```

您可以使用筛选条件查看具有特定生命周期状态的 CEV。例如，要查看生命周期状态为 `pending-validation`、`available` 或 `failed` 的 CEV：

```
aws rds describe-db-engine-versions engine custom-sqlserver-ee
                region us-west-2 include-all query 'DBEngineVersions[?Status == pending-validation || 
                Status == available || Status == failed]'
```

# 删除适用于 RDS Custom for SQL Server 的 CEV
<a name="custom-cev-sqlserver-deleting"></a>

您可以使用 AWS 管理控制台 或 AWS CLI 删除 CEV。通常，这需要花费几分钟时间。

删除 CEV 之前，请确保它未被以下任何项目使用：
+ RDS Custom 数据库实例
+ RDS Custom 数据库实例的快照
+ RDS Custom 数据库实例的自动备份

## 控制台
<a name="custom-cev-sqlserver-deleting.console"></a>

**要删除 CEV**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Custom engine versions**（自定义引擎版本）。

1. 选择要删除其描述或状态的 CEV。

1. 对于**操作**，选择**删除**。

   **Delete *cev\$1name*?**（删除 cev\$1name？）对话框显示。

1. 输入 **delete me**，然后选择**删除**。

   在 **Custom engine versions**（自定义引擎版本）页面中，横幅显示您的 CEV 正在被删除。

## AWS CLI
<a name="custom-cev-sqlserver-deleting.console.cli"></a>

要通过使用 AWS CLI 删除 CEV，请运行 [delete-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-custom-db-engine-version.html) 命令。

以下选项为必填：
+ `--engine custom-sqlserver-ee`
+ `--engine-version cev` ，其中 *cev* 是要删除的自定义引擎版本的名称

以下示例会删除名为 `15.00.4249.2.my_cevtest` 的 CEV。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds delete-custom-db-engine-version \
2.     --engine custom-sqlserver-ee \
3.     --engine-version 15.00.4249.2.my_cevtest
```
对于 Windows：  

```
1. aws rds delete-custom-db-engine-version ^
2.     --engine custom-sqlserver-ee ^
3.     --engine-version 15.00.4249.2.my_cevtest
```

# 为 Amazon RDS Custom for SQL Server 创建并连接到数据库实例
<a name="custom-creating-sqlserver"></a>

您可以创建 RDS Custom 数据库实例，然后使用 AWS Systems Manager 或远程桌面协议 (RDP) 连接该实例。

**重要**  
务必先完成 [为 Amazon RDS Custom for SQL Server 设置环境](custom-setup-sqlserver.md) 部分中的任务，然后才能创建或连接到 RDS Custom for SQL Server 数据库实例。  
您可以在创建 RDS Custom 数据库实例时标记它们，但不要创建或修改 RDS Custom 自动化所需的 `AWSRDSCustom` 标签。有关更多信息，请参阅 [为 RDS Custom for SQL Server 资源添加标签](custom-managing-sqlserver.tagging.md)。  
首次创建 RDS Custom for SQL Server 数据库实例时，您可能会收到以下错误：The service-linked role is in the process of being created.（服务相关角色正在创建过程中）。请稍后重试。如果您这样做，请等待几分钟，然后重新尝试创建数据库实例。

**Topics**
+ [创建 RDS Custom for SQL Server 数据库实例](#custom-creating-sqlserver.create)
+ [RDS Custom 服务相关角色](custom-creating-sqlserver.slr.md)
+ [使用 AWS Systems Manager 连接到 RDS Custom 数据库实例](custom-creating-sqlserver.ssm.md)
+ [使用 RDP 连接到 RDS Custom 数据库实例](custom-creating-sqlserver.rdp.md)

## 创建 RDS Custom for SQL Server 数据库实例
<a name="custom-creating-sqlserver.create"></a>

使用 AWS 管理控制台 或 AWS CLI 创建 Amazon RDS Custom for SQL Server 数据库实例。该过程与创建 Amazon RDS 数据库实例的过程相似。

有关更多信息，请参阅 [创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)。

### 控制台
<a name="custom-creating-sqlserver.CON"></a>

**要创建 RDS Custom for SQL Server 数据库实例**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择**创建数据库**。

1. 选择**Standard create** (标准创建) 作为数据库创建方法。

1. 在 **Engine options**（引擎选项）中，为引擎版本选择 **Microsoft SQL Server**。

1. 对于 **Database management type**（数据库管理类型），选择 **Amazon RDS Custom**。

1. 在 **Edition**（版本）部分中，选择要使用的数据库引擎版本。

1. （可选）如果您打算从 CEV 创建数据库实例，请选中 **Use custom engine version (CEV)** [使用自定义引擎版本（CEV）] 复选框。在下拉列表中选择您的 CEV。

1. 对于**数据库版本**，保留默认值版本。

1. 对于 **Templates** (模板)，选择 **Production** (生产)。

1. 在 **Settings**（设置）部分中，为 **DB instance identifier**（数据库实例标识符）输入一个唯一的名称。

1. 要输入主密码，请执行以下操作：

   1. 在**设置**部分中，打开**凭证设置**。

   1. 清除**自动生成密码**复选框。

   1. 更改 **Master username**（主用户名）值，并在 **Master password**（主密码）和 **Confirm password**（确认密码）中输入相同的密码。

   预设情况下，新的 RDS Custom 数据库实例对主用户使用自动生成的密码。

1. 在 **DB instance size**（数据库实例大小）部分中，为 **DB instance class**（数据库实例类）选择一个值。

   有关支持的类，请参阅 [RDS Custom for SQL Server 的数据库实例类支持](custom-reqs-limits.instancesMS.md)。

1. 选择 **Storage**（存储）设置。

1. 对于 **RDS Custom 安全性**，执行以下操作：

   1. 对于 **IAM 实例配置文件**，可以使用两个选项来为 RDS Custom for SQL Server 数据库实例选择实例配置文件。

      1. 选择**创建新的实例配置文件**并提供实例配置文件的名称后缀。有关更多信息，请参阅 [使用 AWS 管理控制台自动创建实例配置文件](custom-setup-sqlserver.md#custom-setup-sqlserver.instanceProfileCreation)。

      1. 选择现有的实例配置文件。从下拉列表中，选择以 `AWSRDSCustom` 开头的实例配置文件。

   1. 对于**加密**，选择 **Enter a key ARN**（输入一个密钥 ARN）以列出可用的 AWS KMS 密钥。然后从列表中选择您的密钥。

      RDS Custom 需要 AWS KMS 密钥。有关更多信息，请参阅 [请确保您有对称的加密 AWS KMS 密钥](custom-setup-sqlserver.md#custom-setup-sqlserver.cmk)。

1. 对于其余部分，请指定首选的 RDS Custom 数据库实例设置。有关每项设置的信息，请参阅[数据库实例的设置](USER_CreateDBInstance.Settings.md)。以下设置不会显示在控制台中，也不受支持：
   + **处理器功能**
   + **Storage autoscaling (存储自动扩展**
   + **可用性与持久性**
   + **Database authentication**（数据库身份验证）中的 **Password and Kerberos authentication**（密码和 Kerberos 身份验证）选项（仅支持 **Password authentication**（密码身份验证））
   + **Additional configuration**（其他配置）中的 **Database options**（数据库选项）组
   + **性能详情**
   + **日志导出**
   + **启用自动次要版本升级**
   + **删除保护**

   **Backup retention period**（备份保留期）受支持，但您不能选择 **0 天**。

1. 选择 **Create database**（创建数据库）。

   **View credential details**（查看凭证详细信息）按钮显示在 **Databases**（数据库）页面中。

   要查看 RDS Custom 数据库实例的主用户名和密码，请选择 **View credential details**（查看凭证详细信息）。

   要以主用户身份连接到数据库实例，请使用显示的用户名和密码。
**重要**  
您无法再次查看主用户密码。如果您不记录它，您可能需要更改它。要在 RDS Custom 数据库实例可用后更改主用户密码，请修改数据库实例。有关修改数据库实例的更多信息，请参阅[管理 Amazon RDS Custom for SQL Server 数据库实例](custom-managing-sqlserver.md)。

1. 选择 **Databases**（数据库）以查看 RDS Custom 数据库实例列表。

1. 选择您刚创建的 RDS Custom 数据库实例。

   在 RDS 控制台上，将显示新 RDS Custom 数据库实例的详细信息。
   + 数据库实例具有 **creating**（正在创建）状态，直到 RDS Custom 数据库实例完成创建并可供使用。当状态变为 **Available (可用)** 时，您可以连接到该数据库实例。根据所分配的实例类和存储的不同，新数据库实例可能需要数分钟时间才能变得可用。
   + **Role**（角色）具有值 **Instance (RDS Custom)**（实例 (RDS Custom)）。
   + **RDS Custom automation mode**（RDS Custom 自动化模式）具有值 **Full automation**（完全自动化）。此设置意味着数据库实例可以提供自动监控和实例恢复。

### AWS CLI
<a name="custom-creating-sqlserver.CLI"></a>

您可以通过使用 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 命令创建 RDS Custom 数据库实例。

以下选项为必填：
+ `--db-instance-identifier`
+ `--db-instance-class`（有关支持的实例类的列表，请参阅 [RDS Custom for SQL Server 的数据库实例类支持](custom-reqs-limits.instancesMS.md)）
+ `--engine`（`custom-sqlserver-ee`、`custom-sqlserver-se` 或 `custom-sqlserver-web`）
+ `--kms-key-id`
+ `--custom-iam-instance-profile`

以下示例将创建名为 `my-custom-instance` 的 RDS Custom for SQL Server 数据库实例。备份保留期为 3 天。

**注意**  
要从自定义引擎版本（CEV）创建数据库实例，请为 `--engine-version` 参数提供现有 CEV 名称。例如，`--engine-version 15.00.4249.2.my_cevtest`

**Example**  
对于 Linux、macOS 或 Unix：  

```
 1. aws rds create-db-instance \
 2.     --engine custom-sqlserver-ee \
 3.     --engine-version 15.00.4073.23.v1 \
 4.     --db-instance-identifier my-custom-instance \
 5.     --db-instance-class db.m5.xlarge \
 6.     --allocated-storage 20 \
 7.     --db-subnet-group mydbsubnetgroup \
 8.     --master-username myuser \
 9.     --master-user-password mypassword \
10.     --backup-retention-period 3 \
11.     --no-multi-az \
12.     --port 8200 \
13.     --kms-key-id mykmskey \
14.     --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance
```
对于：Windows  

```
 1. aws rds create-db-instance ^
 2.     --engine custom-sqlserver-ee ^
 3.     --engine-version 15.00.4073.23.v1 ^
 4.     --db-instance-identifier my-custom-instance ^
 5.     --db-instance-class db.m5.xlarge ^
 6.     --allocated-storage 20 ^
 7.     --db-subnet-group mydbsubnetgroup ^
 8.     --master-username myuser ^
 9.     --master-user-password mypassword ^
10.     --backup-retention-period 3 ^
11.     --no-multi-az ^
12.     --port 8200 ^
13.     --kms-key-id mykmskey ^
14.     --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance
```
作为安全最佳实践，请指定除此处所示提示以外的密码。

使用 `describe-db-instances` 命令以获取有关您的实例的详细信息。

```
1. aws rds describe-db-instances --db-instance-identifier my-custom-instance
```

以下部分输出显示了引擎、参数组和其他信息。

```
 1. {
 2.     "DBInstances": [
 3.         {
 4.             "PendingModifiedValues": {},
 5.             "Engine": "custom-sqlserver-ee",
 6.             "MultiAZ": false,
 7.             "DBSecurityGroups": [],
 8.             "DBParameterGroups": [
 9.                 {
10.                     "DBParameterGroupName": "default.custom-sqlserver-ee-15",
11.                     "ParameterApplyStatus": "in-sync"
12.                 }
13.             ],
14.             "AutomationMode": "full",
15.             "DBInstanceIdentifier": "my-custom-instance",
16.             "TagList": []
17.         }
18.     ]
19. }
```

# RDS Custom 服务相关角色
<a name="custom-creating-sqlserver.slr"></a>

*服务相关角色* 为 Amazon RDS Custom 提供针对您的 AWS 账户中的资源的访问权限。这样可以让您更轻松地使用 RDS Custom，因为您不必手动添加必要的权限。RDS Custom 定义其服务相关角色的权限，除非另外定义，否则只有 RDS Custom 可以代入该角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

创建 RDS Custom 数据库实例时，将创建并使用 Amazon RDS 和 RDS Custom 服务相关角色（如果它们尚未存在）。有关更多信息，请参阅 [将服务相关角色用于 Amazon RDS](UsingWithRDS.IAM.ServiceLinkedRoles.md)。

首次创建 RDS Custom for SQL Server 数据库实例时，您可能会收到以下错误：The service-linked role is in the process of being created.（服务相关角色正在创建过程中）。请稍后重试。如果您这样做，请等待几分钟，然后重新尝试创建数据库实例。

# 使用 AWS Systems Manager 连接到 RDS Custom 数据库实例
<a name="custom-creating-sqlserver.ssm"></a>

创建 RDS Custom 数据库实例后，您可以使用 AWS Systems Manager 会话管理器。会话管理器是一项 Systems Manager 功能，可让您通过基于浏览器的 shell 或通过 AWS CLI 管理 Amazon EC2 实例。有关更多信息，请参阅 [AWS Systems Manager 会话管理器](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)。

## 控制台
<a name="custom-creating-sqlserver.ssm.CON"></a>

**使用会话管理器连接到您的数据库实例**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，请选择 **Databases**（数据库），然后选择要连接到的 RDS Custom 数据库实例。

1. 选择**配置**。

1. 请注意您的数据库实例的 **Resource ID**（资源 ID）值。例如，资源 ID 可能为 `db-ABCDEFGHIJKLMNOPQRS0123456`。

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择**实例**。

1. 查找 EC2 实例的名称，然后选择与其关联的实例 ID。例如，实例 ID 可能为 `i-abcdefghijklm01234`。

1. 选择**连接**。

1. 选择 **Session Manager**（会话管理器）。

1. 选择**连接**。

   系统将为您的会话打开一个窗口。

## AWS CLI
<a name="custom-creating-sqlserver.ssm.CLI"></a>

您可以使用 AWS CLI 连接到 RDS Custom 数据库实例。此方法需要 AWS CLI 的会话管理器插件。要了解如何安装插件，请参阅[安装 AWS CLI 的会话管理器插件](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)。

要查找 RDS Custom 数据库实例的数据库资源 ID，请使用 `[describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)`。

```
aws rds describe-db-instances \
    --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \
    --output text
```

以下示例输出显示了 RDS Custom 实例的资源 ID。前缀为 `db-`。

```
db-ABCDEFGHIJKLMNOPQRS0123456
```

要查找数据库实例的 EC2 实例 ID，请使用 `aws ec2 describe-instances`。以下示例将 `db-ABCDEFGHIJKLMNOPQRS0123456` 用于资源 ID。

```
aws ec2 describe-instances \
    --filters "Name=tag:Name,Values=db-ABCDEFGHIJKLMNOPQRS0123456" \
    --output text \
    --query 'Reservations[*].Instances[*].InstanceId'
```

以下示例输出显示了 EC2 实例 ID。

```
i-abcdefghijklm01234
```

使用 `aws ssm start-session` 命令，以在 `--target` 参数中提供 EC2 实例 ID。

```
aws ssm start-session --target "i-abcdefghijklm01234"
```

成功的连接如下所示。

```
Starting session with SessionId: yourid-abcdefghijklm1234
[ssm-user@ip-123-45-67-89 bin]$
```

# 使用 RDP 连接到 RDS Custom 数据库实例
<a name="custom-creating-sqlserver.rdp"></a>

创建 RDS Custom 数据库实例后，您可以使用 RDP 客户端连接到此实例。该过程与连接到 Amazon EC2 实例的过程相同。有关更多信息，请参阅[连接到 Windows 实例](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html)。

要连接到数据库实例，您需要与该实例关联的密钥对。RDS Custom 会为您创建密钥对。密钥对名称使用前缀 `do-not-delete-rds-custom-DBInstanceIdentifier`。AWS Secrets Manager 将私有密钥存储为密钥。

完成以下步骤中的任务：

1. [配置您的数据库实例以允许 RDP 连接](#custom-creating-sqlserver.rdp.port).

1. [检索您的私有密钥](#custom-creating-sqlserver.rdp.key).

1. [使用 RDP 实用工具连接到 EC2 实例](#custom-creating-sqlserver.rdp.connect).

## 配置您的数据库实例以允许 RDP 连接
<a name="custom-creating-sqlserver.rdp.port"></a>

要允许 RDP 连接，请配置 VPC 安全组并在主机上设置防火墙规则。

### 配置您的 VPC 安全组
<a name="custom-creating-sqlserver.rdp.port.vpc"></a>

请确保与您数据库实例关联的 VPC 安全组允许在端口 3389 上进行传输控制协议 (TCP) 的入站连接。要了解如何配置 VPC 安全组，请参阅 [配置您的 VPC 安全组](custom-setup-sqlserver.md#custom-setup-sqlserver.vpc.sg)。

### 在主机上设置防火墙规则
<a name="custom-creating-sqlserver.rdp.port.firewall"></a>

要允许端口 3389 上的 TCP 入站连接，请在主机上设置防火墙规则。以下示例显示如何执行此操作。

建议使用特定的 `-Profile` 值：`Public`、`Private` 或者 `Domain`。使用 `Any` 指这三个值。您还可以指定用逗号分隔的一组值。有关设置防火墙规则的更多信息，请参阅 Microsoft 文档中的 [Set-NetFirewallRule](https://docs.microsoft.com/en-us/powershell/module/netsecurity/set-netfirewallrule?view=windowsserver2019-ps)。

**使用 Systems Manager 会话管理器设置防火墙规则**

1. 连接到会话管理器，如 [使用 AWS Systems Manager 连接到 RDS Custom 数据库实例](custom-creating-sqlserver.ssm.md) 中所示。

1. 运行以下命令。

   ```
   Set-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)" -Direction Inbound -LocalAddress Any -Profile Any
   ```

**使用 Systems Manager CLI 命令设置防火墙规则**

1. 使用以下命令在主机上打开 RDP。

   ```
   OPEN_RDP_COMMAND_ID=$(aws ssm send-command --region $AWS_REGION \
       --instance-ids $RDS_CUSTOM_INSTANCE_EC2_ID \
       --document-name "AWS-RunPowerShellScript" \
       --parameters '{"commands":["Set-NetFirewallRule -DisplayName \"Remote Desktop - User Mode (TCP-In)\" -Direction Inbound -LocalAddress Any -Profile Any"]}' \
       --comment "Open RDP port" | jq -r ".Command.CommandId")
   ```

1. 使用输出中返回的命令 ID 获取上一个命令的状态。要使用以下查询返回命令 ID，请确保安装了 jq 插件。

   ```
   aws ssm list-commands \
       --region $AWS_REGION \
       --command-id $OPEN_RDP_COMMAND_ID
   ```

## 检索您的私有密钥
<a name="custom-creating-sqlserver.rdp.key"></a>

使用 AWS 管理控制台 或 AWS CLI 检索您的私有密钥。

### 控制台
<a name="custom-creating-sqlserver.rdp.key.CON"></a>

**要检索私有密钥**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，请选择 **Databases**（数据库），然后选择要连接到的 RDS Custom 数据库实例。

1. 选择**配置**选项卡。

1. 请注意您的数据库实例的 **DB instance ID**（数据库实例 ID），例如 `my-custom-instance`。

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择**实例**。

1. 查找 EC2 实例的名称，然后选择与其关联的实例 ID。

   在此示例中，实例 ID 为 `i-abcdefghijklm01234`。

1. 在 **Details**（详细信息）中，查找 **Key pair name**（密钥对名称）。密钥对名称包括数据库标识符。在此示例中，密钥对名称为 `do-not-delete-rds-custom-my-custom-instance-0d726c`。

1. 在实例摘要中，查找 **Public IPv4 DNS**（公有 IPv4 DNS）。在本示例中，公有 DNS 可能是 `ec2-12-345-678-901.us-east-2.compute.amazonaws.com`。

1. 打开位于 [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 的 AWS Secrets Manager 控制台。

1. 选择与密钥对同名的密钥。

1. 选择 **Retrieve secret value (检索密钥值)**。

### AWS CLI
<a name="custom-creating-sqlserver.rdp.key.CLI"></a>

**要检索私有密钥**

1. 通过调用 `aws rds describe-db-instances` 命令获取您的 RDS Custom 数据库实例的列表。

   ```
   aws rds describe-db-instances \
       --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \
       --output text
   ```

1. 例如，从示例输出中选择数据库实例标识符，例如 `do-not-delete-rds-custom-my-custom-instance`。

1. 通过调用 `aws ec2 describe-instances` 命令查找您的数据库实例的 EC2 实例 ID。以下示例使用 EC2 实例名称来描述数据库实例。

   ```
   aws ec2 describe-instances \
       --filters "Name=tag:Name,Values=do-not-delete-rds-custom-my-custom-instance" \
       --output text \
       --query 'Reservations[*].Instances[*].InstanceId'
   ```

   以下示例输出显示了 EC2 实例 ID。

   ```
   i-abcdefghijklm01234
   ```

1. 通过指定 EC2 实例 ID 查找密钥名称，如以下示例所示。

   ```
   aws ec2 describe-instances \
       --instance-ids i-abcdefghijklm01234 \
       --output text \
       --query 'Reservations[*].Instances[*].KeyName'
   ```

   以下示例输出显示了使用前缀 `do-not-delete-rds-custom-DBInstanceIdentifier` 的密钥名称。

   ```
   do-not-delete-rds-custom-my-custom-instance-0d726c
   ```

## 使用 RDP 实用工具连接到 EC2 实例
<a name="custom-creating-sqlserver.rdp.connect"></a>

执行《Amazon EC2 用户指南》**中的[使用 RDP 连接到 Windows 实例](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html#connect-rdp)中的过程。此过程假定您创建了包含您的私有密钥的 .pem 文件。

# 管理 Amazon RDS Custom for SQL Server 数据库实例
<a name="custom-managing-sqlserver"></a>

Amazon RDS Custom for SQL Server 支持 Amazon RDS 数据库实例的常见管理任务子集。在下文中，您可以找到使用 AWS 管理控制台和 AWS CLI 的受支持的 RDS Custom for SQL Server 管理任务的说明。

**Topics**
+ [暂停和恢复 RDS Custom 自动化](custom-managing-sqlserver.pausing.md)
+ [修改 RDS Custom for SQL Server 数据库实例](custom-managing.modify-sqlserver.md)
+ [修改 RDS Custom for SQL Server 数据库实例的存储](custom-managing-sqlserver.storage-modify.md)
+ [为 RDS Custom for SQL Server 资源添加标签](custom-managing-sqlserver.tagging.md)
+ [删除 RDS Custom for SQL Server 数据库实例](#custom-managing-sqlserver.deleting)
+ [启动和停止 RDS Custom for SQL Server 数据库实例](custom-managing-sqlserver.startstop.md)

# 暂停和恢复 RDS Custom 自动化
<a name="custom-managing-sqlserver.pausing"></a>

RDS Custom 自动为 RDS Custom for SQL Server 数据库实例提供监控和实例恢复功能。如果您需要自定义实例，请执行以下操作：

1. 在指定的时间内暂停 RDS Custom 自动化。暂停可确保您的自定义项不会干扰 RDS Custom 自动化。

1. 根据需要自定义 RDS Custom for SQL Server 数据库实例。

1. 请执行以下任一操作：
   + 手动恢复自动化。
   + 等待暂停期结束。在这种情况下，RDS Custom 会自动恢复监控和实例恢复。

**重要**  
修改 RDS Custom for SQL Server 数据库实例时，暂停和恢复自动化是唯一受支持的自动化任务。

## 控制台
<a name="custom-managing.pausing.console"></a>

**要暂停或恢复 RDS Custom 自动化**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，请选择 **Databases**（数据库），然后选择要修改的 RDS Custom 数据库实例。

1. 选择**修改**。将显示**修改数据库实例**页面。

1. 对于 **RDS Custom automation mode**（RDS Custom 自动化模式），请选择以下选项之一：
   + **Paused**（已暂停）将暂停 RDS Custom 数据库实例的监控和实例恢复。为 **Automation mode duration**（自动化模式持续时间）输入您想要的暂停持续时间。最小值为 60 分钟（默认值）。最大值为 1440 分钟。
   + **Full automation**（完全自动化）将恢复自动化。

1. 请选择 **Continue**（继续），以查看修改摘要。

   将显示一条消息，表示 RDS Custom 将立即应用更改。

1. 如果更改正确无误，请选择 **Modify DB Instance**（修改数据库实例）。也可以选择 **Back (返回)** 编辑您的更改，或选择 **Cancel (取消)** 取消更改。

   在 RDS 控制台上，将显示修改的详细信息。如果您暂停了自动化，RDS Custom 数据库实例的 **Status**（状态）将指示 **Automation paused**（自动化已暂停）。

1. （可选）在导航窗格中，选择 **Databases (数据库)**，然后选择 RDS Custom 数据库实例。

   在 **Summary**（摘要）窗格中，**RDS Custom automation mode**（RDS Custom 自动化模式）表示自动化状态。如果自动化已暂停，则值为 **Paused（已暂停）。自动化将在 *num* 分钟内恢复**。

## AWS CLI
<a name="custom-managing-sqlserver.pausing.CLI"></a>

要暂停或恢复 RDS Custom 自动化，请使用 `modify-db-instance` AWS CLI 命令。使用必需的参数 `--db-instance-identifier` 识别数据库实例。使用以下参数控制自动化模式：
+ `--automation-mode` 指定数据库实例的暂停状态。有效值为 `all-paused`，它将暂停自动化，以及 `full`，它将恢复自动化。
+ `--resume-full-automation-mode-minutes` 指定暂停的持续时间。默认值为 60 分钟。

**注意**  
无论您是指定 `--no-apply-immediately` 还是 `--apply-immediately`，RDS Custom 都会尽快地异步应用修改。

在命令响应中，`ResumeFullAutomationModeTime` 以 UTC 时间戳表示恢复时间。当自动化模式为 `all-paused` 时，您可以使用 `modify-db-instance` 恢复自动化模式或延长暂停时间。不支持其他 `modify-db-instance` 选项。

以下示例将 `my-custom-instance` 的自动化暂停 90 分钟。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --automation-mode all-paused \
    --resume-full-automation-mode-minutes 90
```
对于 Windows：  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --automation-mode all-paused ^
    --resume-full-automation-mode-minutes 90
```

以下示例将暂停持续时间再延长 30 分钟。在 `ResumeFullAutomationModeTime` 中显示的原始时间中增加 30 分钟。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --automation-mode all-paused \
    --resume-full-automation-mode-minutes 30
```
对于 Windows：  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --automation-mode all-paused ^
    --resume-full-automation-mode-minutes 30
```

以下示例恢复 `my-custom-instance` 的完全自动化。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --automation-mode full \
```
对于 Windows：  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --automation-mode full
```
在以下部分示例输出中，待处理 `AutomationMode` 值为 `full`。  

```
{
    "DBInstance": {
        "PubliclyAccessible": true,
        "MasterUsername": "admin",
        "MonitoringInterval": 0,
        "LicenseModel": "bring-your-own-license",
        "VpcSecurityGroups": [
            {
                "Status": "active",
                "VpcSecurityGroupId": "0123456789abcdefg"
            }
        ],
        "InstanceCreateTime": "2020-11-07T19:50:06.193Z",
        "CopyTagsToSnapshot": false,
        "OptionGroupMemberships": [
            {
                "Status": "in-sync",
                "OptionGroupName": "default:custom-oracle-ee-19"
            }
        ],
        "PendingModifiedValues": {
            "AutomationMode": "full"
        },
        "Engine": "custom-oracle-ee",
        "MultiAZ": false,
        "DBSecurityGroups": [],
        "DBParameterGroups": [
            {
                "DBParameterGroupName": "default.custom-oracle-ee-19",
                "ParameterApplyStatus": "in-sync"
            }
        ],
        ...
        "ReadReplicaDBInstanceIdentifiers": [],
        "AllocatedStorage": 250,
        "DBInstanceArn": "arn:aws:rds:us-west-2:012345678912:db:my-custom-instance",
        "BackupRetentionPeriod": 3,
        "DBName": "ORCL",
        "PreferredMaintenanceWindow": "fri:10:56-fri:11:26",
        "Endpoint": {
            "HostedZoneId": "ABCDEFGHIJKLMNO",
            "Port": 8200,
            "Address": "my-custom-instance.abcdefghijk.us-west-2.rds.amazonaws.com"
        },
        "DBInstanceStatus": "automation-paused",
        "IAMDatabaseAuthenticationEnabled": false,
        "AutomationMode": "all-paused",
        "EngineVersion": "19.my_cev1",
        "DeletionProtection": false,
        "AvailabilityZone": "us-west-2a",
        "DomainMemberships": [],
        "StorageType": "gp2",
        "DbiResourceId": "db-ABCDEFGHIJKLMNOPQRSTUVW",
        "ResumeFullAutomationModeTime": "2020-11-07T20:56:50.565Z",
        "KmsKeyId": "arn:aws:kms:us-west-2:012345678912:key/aa111a11-111a-11a1-1a11-1111a11a1a1a",
        "StorageEncrypted": false,
        "AssociatedRoles": [],
        "DBInstanceClass": "db.m5.xlarge",
        "DbInstancePort": 0,
        "DBInstanceIdentifier": "my-custom-instance",
        "TagList": []
    }
```

# 修改 RDS Custom for SQL Server 数据库实例
<a name="custom-managing.modify-sqlserver"></a>

修改 RDS Custom for SQL Server 数据库实例的过程与为 Amazon RDS 执行此操作类似，但您可以进行的更改仅限于以下内容：
+ 更改数据库实例类
+ 更改备份保留期和备份时段
+ 更改维护时段
+ 当新版本可用时升级数据库引擎版本
+ 更改分配的存储、预调配 IOPS 和存储类型
+ 允许和删除多可用区部署

以下限制适用于修改 RDS Custom for SQL Server 数据库实例：
+ 不支持自定义数据库选项和参数组。
+ 手动附加到 RDS Custom 数据库实例的任何存储卷都在支持外围之外。

  有关更多信息，请参阅 [RDS Custom 支持外围](custom-concept.md#custom-troubleshooting.support-perimeter)。

## 控制台
<a name="custom-managing.modify-sqlserver.CON"></a>

**要修改 RDS Custom for SQL Server 数据库实例**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择要修改的数据库实例。

1. 选择**修改**。

1. 根据需要进行以下更改：

   1. 对于**数据库引擎版本**，选择新版本。

   1. 更改 **DB instance class**（数据库实例类）的值。有关支持的类，请参阅[RDS Custom for SQL Server 的数据库实例类支持](custom-reqs-limits.instancesMS.md)

   1. 更改 **Backup retention period**（备份保留期）的值。

   1. 对于 **Backup window**（备份时段），设置 **Start time**（开始时间）和 **Duration**（持续时间）的值。

   1. 对于 **DB instance maintenance window**（数据库实例维护时段），设置 **Start day**（开始日）、**Start time**（开始时间）和 **Duration**（持续时间）的值。

1. 选择**继续**。

1. 选择 **Apply immediately**（立即应用）或 **Apply during the next scheduled maintenance window**（在下一个计划的维护时段内应用）。

1. 选择**修改数据库实例**。

## AWS CLI
<a name="custom-managing.modify-sqlserver.CLI"></a>

要修改 RDS Custom for SQL Server 数据库实例，请使用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 命令。根据需要设置以下参数：
+ `--db-instance-class` – 有关支持的类，请参阅[RDS Custom for SQL Server 的数据库实例类支持](custom-reqs-limits.instancesMS.md)
+ `--engine-version` – 要升级到的数据库引擎的版本号。
+ `--backup-retention-period` – 保留自动备份的持续时间，为 0-35 天。
+ `--preferred-backup-window` – 创建自动备份的每日时间范围。
+ `--preferred-maintenance-window` – 可能进行系统维护的每周时间范围（按世界协调时间计算）。
+ `--apply-immediately` – 使用 `--apply-immediately` 可立即应用存储更改。

  或使用 `--no-apply-immediately`（默认设置）以在下一个维护时段内应用更改。

# 修改 RDS Custom for SQL Server 数据库实例的存储
<a name="custom-managing-sqlserver.storage-modify"></a>

修改 RDS Custom for SQL Server 数据库实例的存储与修改 Amazon RDS 数据库实例的存储类似，但您只能执行以下操作：
+ 增加分配的存储大小。
+ 更改存储类型。您可以使用可用的存储类型，如通用型或预调配 IOPS。gp3、io1 和 io2 Block Express 存储类型支持预调配 IOPS。
+ 如果您使用的是支持预调配 IOPS 的卷类型，则更改预调配 IOPS。

以下限制适用于修改 RDS Custom for SQL Server 数据库实例的存储：
+ RDS Custom for SQL Server 的最小分配存储大小为 20 GiB。io1、gp2 和 gp3 的最大存储限制为 16 TiB，而 io2 支持 64 TiB。
+ 与 Amazon RDS 一样，您无法减少分配的存储。这是 Amazon Elastic Block Store (Amazon EBS) 卷的限制。有关更多信息，请参阅 [使用 Amazon RDS 数据库实例的存储](USER_PIOPS.StorageTypes.md)。
+ RDS Custom for SQL Server 数据库实例不支持存储自动扩缩。
+ 您手动连接到 RDS Custom 数据库实例的任何存储卷都不会考虑进行存储扩缩。仅考虑对 RDS 提供的默认数据卷（即 D 驱动器）进行存储扩缩。

  有关更多信息，请参阅 [RDS Custom 支持外围](custom-concept.md#custom-troubleshooting.support-perimeter)。
+ 扩展存储通常不会导致数据库实例的任何中断或性能下降。在修改数据库实例的存储大小后，数据库实例的状态为 **storage-optimization**。
+ 存储优化可能耗时数小时。六（6）小时后或在实例上完成存储优化后，您才能进行进一步的存储修改。有关更多信息，请参阅 [使用 Amazon RDS 数据库实例的存储](USER_PIOPS.StorageTypes.md)。

有关存储的更多信息，请参阅 [Amazon RDS 数据库实例存储](CHAP_Storage.md)。

有关存储修改的一般信息，请参阅[使用 Amazon RDS 数据库实例的存储](USER_PIOPS.StorageTypes.md)。

**重要**  
请勿使用 Amazon EC2 控制台、Amazon EBS 控制台或 API 修改 RDS Custom for SQL Server 数据库实例的存储。在 Amazon RDS 控制台或 API 之外直接修改存储会使数据库处于 `unsupported-configuration` 状态。  
当您使用 Amazon EC2 或 Amazon EBS 直接更改存储时，Amazon RDS 无法跟踪或管理数据库实例状态。这可能会导致：  
高可用性失效转移机制无法正常运行
数据库复制设置中断
冗余功能失败
只通过 Amazon RDS 控制台或 API 修改存储，以使数据库保持在受支持的状态。有关恢复步骤，请参阅[修复 RDS Custom for SQL Server 中不支持的配置](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.fix-unsupported)。

## 控制台
<a name="custom-managing.storage-modify.CON"></a>

**修改 RDS Custom for SQL Server 数据库实例的存储**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择要修改的数据库实例。

1. 选择**修改**。

1. 根据需要进行以下更改：

   1. 为 **Allocated Storage (分配的存储)** 输入新值。它必须大于当前值，且范围从 20GiB 到 16TiB。

   1. 更改 **Storage type**（存储类型）的值。您可以从可用的通用型或预调配 IOPS 存储类型中进行选择。gp3、io1 和 io2 Block Express 存储类型支持预调配 IOPS。

   1. 如果您指定支持预调配 IOPS 的卷类型，则可以定义**预调配 IOPS** 值。

1. 选择**继续**。

1. 选择 **Apply immediately**（立即应用）或 **Apply during the next scheduled maintenance window**（在下一个计划的维护时段内应用）。

1. 选择**修改数据库实例**。

## AWS CLI
<a name="custom-managing-sqlserver.storage-modify.CLI"></a>

要修改 RDS Custom for SQL Server 数据库实例的存储，请使用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 命令。根据需要设置以下参数：
+ `--allocated-storage` – 要为数据库实例分配的存储量（以 GiB 为单位）。它必须大于当前值，并且范围从 20 到 16,384GiB。
+ `--storage-type` – 存储类型，例如 gp2、gp3、io1 或 io2。
+ `--iops` – 数据库实例的预调配 IOPS。您只能为支持预调配 IOPS 的存储类型（gp3、io1 和 io2）指定此项。
+ `--apply-immediately` – 使用 `--apply-immediately` 可立即应用存储更改。

  或使用 `--no-apply-immediately`（默认设置）以在下一个维护时段内应用更改。

以下示例将 my-custom-instance 的存储大小更改为 200GiB，将存储类型更改为 io1，将预调配 IOPS 更改为 3000。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --storage-type io1 \
    --iops 3000 \
    --allocated-storage 200 \
    --apply-immediately
```
对于 Windows：  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --storage-type io1 ^
    --iops 3000 ^
    --allocated-storage 200 ^
    --apply-immediately
```

# 为 RDS Custom for SQL Server 资源添加标签
<a name="custom-managing-sqlserver.tagging"></a>

您可以将 RDS Custom 资源与 Amazon RDS 资源一样标记，但有一些重要的区别：
+ 不要创建或修改 RDS Custom 自动化所需的 `AWSRDSCustom` 标签。如果您这样做，可能会破坏自动化。
+ `Name` 标签将添加到 RDS Custom 资源，前缀为 `do-not-delete-rds-custom`。任何客户传递的键值都将被覆盖。
+ 在创建过程中添加到 RDS Custom 数据库实例的标签将传播到所有其他相关 RDS Custom 资源。
+ 当您在创建数据库实例后将标签添加到 RDS Custom 资源时，标签不会传播。

有关资源标记的一般信息，请参阅[为 Amazon RDS 资源添加标签](USER_Tagging.md)。

## 删除 RDS Custom for SQL Server 数据库实例
<a name="custom-managing-sqlserver.deleting"></a>

要删除 RDS Custom for SQL Server 数据库实例，请执行以下操作：
+ 提供数据库实例的名称。
+ 选择或清除拍摄数据库实例的最终数据库快照的选项。
+ 选择或清除保留自动备份的选项。

您可以使用控制台或 CLI 删除 RDS Custom for SQL Server 数据库实例。删除数据库实例所需的时间可能会有所不同，具体取决于备份保留期（也即，要删除的备份数）、删除的数据量以及是否拍摄最终快照。

**警告**  
删除 RDS Custom for SQL Server 数据库实例将永久删除 EC2 实例和关联的 Amazon EBS 卷。任何时候都不要终止或删除这些资源，否则，删除和最终快照创建可能会失败。

**注意**  
如果数据库实例具有 `creating`、`failed`、`incompatible-create`、`incompatible-restore` 或 `incompatible-network` 状态，则无法为其创建最终数据库快照。有关更多信息，请参阅 [查看 Amazon RDS数据库实例状态](accessing-monitoring.md#Overview.DBInstance.Status)。

**重要**  
当您选择拍摄最终快照时，我们建议您当正在删除数据库实例时避免向数据库实例写入数据。启动数据库实例删除后，不能保证数据更改会被最终快照捕获。

### 控制台
<a name="custom-managing-sqs.deleting.console"></a>

**要删除 RDS Custom 数据库实例**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases**（数据库），然后选择要删除的 RDS Custom for SQL Server 数据库实例。RDS Custom for SQL Server 数据库实例显示角色 **Instance (RDS Custom for SQL Server)** [实例（RDS Custom for SQL Server）]。

1. 对于**操作**，选择**删除**。

1. 要拍摄最终快照，请选择 **Create final snapshot**（创建最终快照），并为 **Final snapshot name**（最终快照名称）提供名称。

1. 要保留自动备份，请选择 **Retain automated backups (保留自动备份)**。

1. 在框中输入 **delete me**。

1. 选择**删除**。

### AWS CLI
<a name="custom-managing-sqs.deleting.CLI"></a>

您可以通过使用 [delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance.html) AWS CLI 命令删除 RDS Custom for SQL Server 数据库实例。使用必需的参数 `--db-instance-identifier` 识别数据库实例。其余参数与 Amazon RDS 数据库实例的参数相同。

以下示例删除名为 `my-custom-instance` 的 RDS Custom for SQL Server 数据库实例，拍摄最终快照，并保留自动备份。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds delete-db-instance \
    --db-instance-identifier my-custom-instance \
    --no-skip-final-snapshot \
    --final-db-snapshot-identifier my-custom-instance-final-snapshot \
    --no-delete-automated-backups
```
对于 Windows：  

```
aws rds delete-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --no-skip-final-snapshot ^
    --final-db-snapshot-identifier my-custom-instance-final-snapshot ^
    --no-delete-automated-backups
```

要拍摄最终快照，需要且必须指定 `--final-db-snapshot-identifier` 选项。

要跳过最终快照，请在命令中指定 `--skip-final-snapshot` 选项而不是 `--no-skip-final-snapshot` 和 `--final-db-snapshot-identifier` 选项。

要删除自动备份，请在命令中指定 `--delete-automated-backups` 选项而不是 `--no-delete-automated-backups` 选项。

# 启动和停止 RDS Custom for SQL Server 数据库实例
<a name="custom-managing-sqlserver.startstop"></a>

您可以启动和停止 RDS Custom for SQL Server 数据库实例。RDS for SQL Server 数据库实例的一般要求和限制同样适用于停止和启动 RDS Custom for SQL Server 数据库实例。有关更多信息，请参阅 [暂时停止 Amazon RDS 数据库实例](USER_StopInstance.md)。

以下注意事项也适用于启动和停止 RDS Custom for SQL Server 数据库实例：
+ 当数据库实例为 `STOPPED` 时，不支持修改 RDS Custom for SQL Server 数据库实例的 EC2 实例属性。
+ 只有在将 RDS Custom for SQL Server 数据库实例配置为单可用区时，您才能停止和启动该数据库实例。您无法停止多可用区配置中的 RDS Custom for SQL Server 数据库实例。
+ 当您停止 RDS Custom for SQL Server 数据库实例时，将创建 `SYSTEM` 快照。当您再次启动 RDS Custom for SQL Server 数据库实例时，将自动删除此快照。
+ 如果您在 RDS Custom for SQL Server 数据库实例停止时删除 EC2 实例，那么当您再次启动 RDS Custom for SQL Server 数据库实例时，`C:` 驱动器将被替换。
+ 当您停止 RDS custom for SQL Server 数据库实例时，只要您不修改实例类型，`C:\` 驱动器、主机名和您的自定义配置就会持久存在。
+ 以下操作将导致 RDS Custom 将数据库实例放置在支持外围之外，并且您仍将收取数据库实例小时数的费用：
  + 在 Amazon RDS 停止时启动底层 EC2 实例。要解决这个问题，您可以调用 `start-db-instance` Amazon RDS API，或者停止 EC2 以便 RDS Custom 实例返回到 `STOPPED`。
  + RDS Custom for SQL Server 数据库实例为 `ACTIVE` 时停止底层 EC2 实例。

有关停止和启动数据库实例的更多详细信息，请参阅[暂时停止 Amazon RDS 数据库实例](USER_StopInstance.md)和[启动之前停止的 Amazon RDS 数据库实例](USER_StartInstance.md)。

# 将 Microsoft Active Directory 用于 RDS Custom for SQL Server
<a name="custom-sqlserver-WinAuth"></a>

RDS Custom for SQL Server 允许将您的实例加入自托管式 Active Directory（AD）或 AWS Managed Microsoft AD。无论您的 AD 托管在哪里，例如本地数据中心、Amazon EC2 或任何其他云服务提供商，都是如此。

要对用户和服务进行身份验证，您可以在 RDS Custom for SQL Server 数据库实例上使用 NTLM 或 Kerberos 身份验证，而无需使用中间域和林信任。当用户尝试使用自加入的 Active Directory 在您的 RDS Custom for SQL Server 数据库实例上进行身份验证时，身份验证请求将转发到您指定的自托管式 AD 或 AWS Managed Microsoft AD。

在以下各节中，您可以找到有关将自托管式 Active Directory 和 AWS Managed Active Directory 用于 RDS Custom for SQL Server 的信息。

**Topics**
+ [区域和版本可用性](#custom-sqlserver-WinAuth.Regions)
+ [配置自托管式 AD 或本地 AD](custom-sqlserver-WinAuth.config-Self-Managed.md)
+ [使用 Directory Service 配置 Microsoft Active Directory](custom-sqlserver-WinAuth.config-ADS.md)
+ [网络配置端口规则](custom-sqlserver-WinAuth.NWConfigPorts.md)
+ [网络验证](custom-sqlserver-WinAuth.NWValidation.md)
+ [为 RDS Custom for SQL Server 实例设置 Windows 身份验证](custom-sqlserver-WinAuth.settingUp.md)
+ [在域中管理数据库实例](custom-sqlserver-WinAuth.ManagingDBI.md)
+ [了解域成员资格](custom-sqlserver-WinAuth.Understanding.md)
+ [Active Directory 故障排除](custom-sqlserver-WinAuth.Troubleshoot.md)

## 区域和版本可用性
<a name="custom-sqlserver-WinAuth.Regions"></a>

RDS Custom for SQL Server 支持自托管式 AD 和 AWS Managed Microsoft AD，在所有支持 RDS Custom for SQL Server 的区域中使用 NTLM 或 Kerberos。有关更多信息，请参阅 [支持 RDS Custom 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md)。

# 配置自托管式 AD 或本地 AD
<a name="custom-sqlserver-WinAuth.config-Self-Managed"></a>

要将本地或自托管式 Microsoft AD 加入 RDS Custom for SQL Server 数据库实例，您的活动域必须按以下方式进行配置：
+ 在自托管式或本地 AD 中定义与 RDS Custom for SQL Server 数据库实例关联的 VPC 中的子网。确认您的 VPC 中的子网与 AD 站点中的子网之间没有任何冲突。
+ 您 AD 域控制器的域功能级别为 Windows Server 2008 R2 或更高版本。
+ 您的 AD 域名不能采用单标签域（SLD）格式。RDS Custom for SQL Server 不支持 SLD 域。
+ AD 的完全限定域名（FQDN）不能超过 47 个字符。

## 配置您的网络连接
<a name="custom-sqlserver-WinAuth.config-Self-Managed.network"></a>

按以下方式配置您的自托管式或本地 AD 网络连接：
+ 在 Amazon VPC（其中运行 RDS Custom for SQL Server 实例）和您的 AD 之间设置连接。使用 Direct Connect、Site-to-Site VPN AWS Transit Gateway 和 VPC 对等连接。
+ RDS Custom for SQL Server 安全组和网络 ACL 允许端口上的流量流向您的自托管式或本地 AD。有关更多信息，请参阅 [网络配置端口规则](custom-sqlserver-WinAuth.NWConfigPorts.md)。  
![\[Microsoft SQL Server Windows 身份验证目录\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/custom-sqs-SM-NC.png)

## 配置 DNS 解析
<a name="custom-sqlserver-WinAuth.config-Self-Managed.DNS"></a>

设置以下要求以使用自托管式或本地 AD 配置 DNS 解析：
+ 在 VPC 内配置 DNS 解析，以解析自托管式 Active Directory 的完全限定域名（FQDN）。FQDN 的一个例子是 `corp.example.local`。要配置 DNS 解析，请将 VPC DNS 解析程序配置为使用 Amazon Route 53 出站端点和解析程序规则转发对某些域的查询。有关更多信息，请参阅[配置 Route 53 Resolver 出站端点以解析 DNS 记录](https://repost.aws/knowledge-center/route53-resolve-with-outbound-endpoint)。
+ 对于同时利用 VPC 和本地资源的工作负载，您必须解析本地托管的 DNS 记录。本地资源可能需要解析托管在 AWS 上的名称。

  要创建混合云设置，请使用解析程序端点和条件转发规则解析本地资源与自定义 VPC 之间的 DNS 查询。有关更多信息，请参阅《Amazon Route 53 开发人员指南》**中的[解析 VPC 与网络之间的 DNS 查询](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-overview-DSN-queries-to-vpc.html)。

**重要**  
修改 RDS Custom for SQL Server 上网络接口的 DNS 解析程序设置会导致启用了 DNS 的 VPC 端点不再正常运行。无法访问互联网的私有子网中的实例需要启用了 DNS 的 VPC 端点。

# 使用 Directory Service 配置 Microsoft Active Directory
<a name="custom-sqlserver-WinAuth.config-ADS"></a>

AWS Managed Microsoft AD 在 AWS 中创建完全托管的 Microsoft Active Directory，由 Windows Server 2019 提供支持并在 2012 R2 林和域功能级别运行。Directory Service 在 Amazon VPC 的不同子网中创建域控制器，使您的目录即使在出现故障时也具有很高的可用性。

要使用 AWS Managed Microsoft AD 创建目录，请参阅《AWS Directory Service 管理指南》**中的 [AWS Managed Microsoft AD 入门](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started.html)。

## 配置您的网络连接
<a name="custom-sqlserver-WinAuth.config-ADS.network"></a>

### 在目录和数据库实例之间启用跨 VPC 流量
<a name="custom-sqlserver-WinAuth.config-ADS.network.x-vpc"></a>

要在同一 VPC 中查找目录和数据库实例，请跳过该步骤，然后转到[网络配置端口规则](custom-sqlserver-WinAuth.NWConfigPorts.md)中的下一步。

要在不同的 VPC 中查找目录和数据库实例，请使用 VPC 对等连接或 AWS Transit Gateway 配置跨 VPC 流量。有关使用 VPC 对等连接的更多信息，请参阅《Amazon VPC 对等连接指南》**中的[什么是 VPC 对等连接？](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)和《Amazon VPC Transit Gateways》**中的[什么是 AWS Transit Gateway？](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)。

**使用 VPC 对等连接启用跨 VPC 流量**

1. 设置适合的 VPC 路由规则，以便确保网络流量可以双向流动。

1. 允许数据库实例的安全组从目录的安全组接收入站流量。有关更多信息，请参阅 [网络配置端口规则](custom-sqlserver-WinAuth.NWConfigPorts.md)。

1. 网络访问控制列表（ACL）不得阻止流量。

如果该目录由不同的 AWS 账户拥有，则您必须共享该目录。要与 AWS 账户共享 RDS Custom for SQL Server 实例所在的目录，请按照《AWS Directory Service 管理指南》**中的[教程：共享 AWS Managed Microsoft AD 以便无缝地加入 EC2 域](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html)操作。

**在 AWS 账户之间共享目录**

1. 使用数据库实例的账户登录 Directory Service 控制台，并检查在处理之前域是否具有 `SHARED` 状态。

1. 使用数据库实例的账户登录 Directory Service 控制台后，记下**目录 ID** 值。您可以使用此 ID 将数据库实例加入域。

## 配置 DNS 解析
<a name="custom-sqlserver-WinAuth.config-ADS.DNS"></a>

当您使用 AWS Managed Microsoft AD 创建目录时，Directory Service 将代表您创建两个域控制器并添加 DNS 服务。

如果您已有 AWS Managed Microsoft AD 或计划在 VPC 中启动一个（除 RDS Custom for SQL Server 数据库实例之外），请将 VPC DNS 解析程序配置为使用 Route 53 出站和解析程序规则转发对某些域的查询，请参阅[配置 Route 53 Resolver 出站端点以解析 DNS 记录](https://repost.aws/knowledge-center/route53-resolve-with-outbound-endpoint)。

# 网络配置端口规则
<a name="custom-sqlserver-WinAuth.NWConfigPorts"></a>

确保您满足以下网络配置：
+ 在您要在其中创建 RDS Custom for SQL Server 数据库实例的 Amazon VPC 与自托管式 Active Directory 或 AWS Managed Microsoft AD 之间配置了连接。对于自托管式 Active Directory，使用 AWS Direct Connect、AWS VPN、VPC 对等连接或 AWS Transit Gateway 来设置连接。对于 AWS Managed Microsoft AD，使用 VPC 对等连接来设置连接。
+ 确保要在其中创建 RDS Custom for SQL Server 数据库实例的子网的安全组和 VPC 网络 ACL 在端口上允许有下图所示方向的流量。  
![\[Microsoft Active Directory 网络配置端口规则。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/custom_sqlserver_ActiveDirectory_Requirements_NetworkConfig.png)

  下表确定了每个端口的作用。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-sqlserver-WinAuth.NWConfigPorts.html)
+ 通常，域 DNS 服务器位于 AD 域控制器中。您无需配置 VPC DHCP 选项集即可使用此功能。有关更多信息，请参阅《Amazon VPC 用户指南》**中的 [DHCP 选项集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。

**重要**  
如果您使用的是 VPC 网络 ACL，则还必须允许动态端口（49152-65535）上有来自 RDS Custom for SQL Server 数据库实例的出站流量。确保这些流量规则也镜像到适用于每个 AD 域控制器、DNS 服务器和 RDS Custom for SQL Server 数据库实例的防火墙上。  
虽然 VPC 安全组要求仅在发起网络流量的方向打开端口，但大多数 Windows 防火墙和 VPC 网络 ACL 要求双向打开端口。

# 网络验证
<a name="custom-sqlserver-WinAuth.NWValidation"></a>

在将 RDS Custom 实例加入自托管式 AD 或AWS Managed Microsoft AD 之前，请从与您计划启动 RDS Custom for SQL Server 实例所在的同一 VPC 中的 EC2 实例中检查以下内容。
+ 检查您能否将完全限定域名（FQDN）解析为域控制器 IP。

  ```
  nslookup corp.example.com
  ```

  该命令必须返回类似的输出：

  ```
  Server:  ip-10-0-0-2.us-west-2.compute.internal
  Address:  25.0.0.2
  
  Non-authoritative answer:
  Name:    corp.example.com
  Addresses:  40.0.9.25 (DC1 IP)
              40.0.50.123 (DC2 IP)
  ```
+ 解析您要启动 RDS Custom 实例所在的同一 VPC 中的 EC2 实例中的 AWS 服务：

  ```
  $region='input-your-aws-region'
  $domainFQDN='input-your-domainFQDN'
   
  function Test-DomainPorts {
      param (
          [string]$Domain,
          [array]$Ports
      )
   
      foreach ($portInfo in $Ports) {
          try {
              $conn = New-Object System.Net.Sockets.TcpClient
              $connectionResult = $conn.BeginConnect($Domain, $portInfo.Port, $null, $null)
              $success = $connectionResult.AsyncWaitHandle.WaitOne(1000) # 1 second timeout
              if ($success) {
                  $conn.EndConnect($connectionResult)
                  $result = $true
              } else {
                  $result = $false
              }
          }
          catch {
              $result = $false
          }
          finally {
              if ($null -ne $conn) {
                  $conn.Close()
              }
          }
          Write-Host "$($portInfo.Description) port open: $result"
      }
  }
   
  # Check if ports can be reached 
  $ports = @(
      @{Port = 53;   Description = "DNS"},
      @{Port = 88;   Description = "Kerberos"},
      @{Port = 389;  Description = "LDAP"},
      @{Port = 445;  Description = "SMB"},
      @{Port = 5985; Description = "WinRM"},
      @{Port = 636;  Description = "LDAPS"},
      @{Port = 3268; Description = "Global Catalog"},
      @{Port = 3269; Description = "Global Catalog over SSL"},
      @{Port = 9389; Description = "AD DS"}
  )
   
  function Test-DomainReachability {
      param (
          [string]$DomainName
      )
      
      try {
          $dnsResults = Resolve-DnsName -Name $DomainName -ErrorAction Stop
          Write-Host "Domain $DomainName is successfully resolving to following IP addresses: $($dnsResults.IpAddress)"
          Write-Host ""
          return $true
      } 
      catch {
          Write-Host ""
          Write-Host "Error Message: $($_.Exception.Message)"
          Write-Host "Domain $DomainName reachability check failed, please Configure DNS resolution"
          return $false
      }
  }
   
  $domain = (Get-WmiObject Win32_ComputerSystem).Domain
  if ($domain -eq 'WORKGROUP') {
      Write-Host ""    
      Write-Host "Host $env:computername is still part of WORKGROUP and not part of any domain"
      }
  else {
      Write-Host ""
      Write-Host "Host $env:computername is joined to $domain domain"
      Write-Host ""
      }
   
   
  $isReachable = Test-DomainReachability -DomainName $domainFQDN  
  if ($isReachable) {
      write-Host "Checking if domain $domainFQDN is reachable on required ports  "
      Test-DomainPorts -Domain $domainFQDN -Ports $ports
  }
  else {
      Write-Host "Port check skipped. Domain not reachable"
  }   
   
   
   
  # Get network adapter configuration
  $networkConfig = Get-WmiObject Win32_NetworkAdapterConfiguration | 
                   Where-Object { $_.IPEnabled -eq $true } |
                   Select-Object -First 1
   
  # Check DNS server settings
  $dnsServers = $networkConfig.DNSServerSearchOrder
   
  if ($dnsServers) {
      Write-Host "`nDNS Server settings:"
      foreach ($server in $dnsServers) {
          Write-Host "  - $server"
      }
  } else {
      Write-Host "`nNo DNS servers configured or unable to retrieve DNS server information."
  }
   
  write-host ""
   
  # Checks reachability to dependent services
  $services = "s3", "ec2", "secretsmanager", "logs", "events", "monitoring", "ssm", "ec2messages", "ssmmessages"
   
  function Get-TcpConnectionAsync {
      param (
          $ServicePrefix,
          $region
      )
      $endpoint = "${ServicePrefix}.${region}.amazonaws.com"
      $tcp = New-Object Net.Sockets.TcpClient
      $result = $false
   
      try {
          $connectTask = $tcp.ConnectAsync($endpoint, 443)
          $timedOut = $connectTask.Wait(3000)
          $result = $tcp.Connected
      } 
      catch {
          $result = $false
      } 
      return $result
  }
   
  foreach ($service in $services) {
      $validationResult = Get-TcpConnectionAsync -ServicePrefix $service -Region $region
      Write-Host "Reachability to $service is $validationResult"
  }
  ```

  对于 `s3`、`ec2`、`secretsmanager`、`logs`、`events`、`monitoring`、`ssm`、`ec2messages` 和 `ssmmessages`，`TcpTestSucceeded` 值必须返回 `True`。

# 为 RDS Custom for SQL Server 实例设置 Windows 身份验证
<a name="custom-sqlserver-WinAuth.settingUp"></a>

我们建议为任何拥有已加入 AD 域的 RDS Custom for SQL Server 数据库实例的 AWS 账户创建专用 OU 以及作用域为该 OU 的服务凭证。通过专用 OU 和服务凭证，您可以避免权限冲突并遵循最低权限原则。

Active Directory 级别的组策略可能与 AWS 自动化和权限发生冲突。我们建议选择仅适用于您为 RDS Custom for SQL Server 创建的 OU 的 GPO。
+ 要在自托管式或本地 AD 中创建 OU 和 AD 域用户，您可以以域管理员身份连接域控制器。
+ 要在 Directory Service 目录中创建用户和组，必须连接到管理实例，还必须已作为有权创建用户和组的用户登录。有关更多信息，请参阅《AWS Directory Service 管理指南》**中的 [AWS Managed Microsoft AD 中的用户和组管理](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html)。
+ 要从 Amazon EC2 Windows Server 实例中管理 Active Directory，您需要在 EC2 实例上安装 Active Directory Domain Services 和 Active Directory Lightweight Directory Services 工具。有关更多信息，请参阅《AWS Directory Service 管理指南》**中的[为 AWS Managed Microsoft AD 安装 Active Directory 管理工具](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_install_ad_tools.html)。
+ 为了便于管理，建议您将这些工具安装在单独的 EC2 实例上，而不是 RDS Custom for SQL Server 数据库实例上。

AD 域服务账户的要求如下：
+ 您必须在 AD 域中有一个服务账户，该账户具有将计算机加入该域的委派权限。域服务账户是您的 AD 中的一个用户账户，该账户具有执行某些任务的委派权限。
+ 在您要加入 RDS Custom for SQL Server 实例的组织单位中向域服务账户委派以下权限：
  + 验证写入 DNS 主机名的能力
  + 验证写入服务主体名称的能力
  + 创建和删除计算机对象
+ 对于自托管式和本地 AD，域服务账户必须是“AWS 域名系统委托管理员”组的成员。
+ 对于 AWS Managed Microsoft AD，域名服务账户应是“DnsAdmins”组的成员。

这些是将计算机对象加入自托管式 AD 和 AWS Managed Microsoft AD 至少需要具备的一组权限。有关更多信息，请参阅 Microsoft Windows Server 文档中的[错误：当已委派控制的非管理员用户尝试将计算机加入域控制器时，访问被拒绝](https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/access-denied-when-joining-computers)。

**重要**  
创建数据库实例后，请勿移动 RDS Custom for SQL Server 在组织单位（OU）中创建的计算机对象。移动关联对象可能会导致您的 RDS Custom for SQL Server 数据库实例出现配置错误。如果您需要移动 Amazon RDS 创建的计算机对象，请通过 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 操作用计算机对象所需位置修改域参数。

**Topics**
+ [步骤 1：在 AD 中创建组织单位（OU）](#custom-sqlserver-WinAuth.settingUp.CreateOU)
+ [步骤 2：创建 AD 域用户](#custom-sqlserver-WinAuth.settingUp.ADuser)
+ [步骤 3：将控制权委派给自托管式 AD 或 AWS Managed Microsoft AD 中的 AD 用户](#custom-sqlserver-WinAuth.settingUp.Delegate)
+ [步骤 4：创建密钥](#custom-sqlserver-WinAuth.settingUp.ASM)
+ [步骤 5：创建或修改 RDS Custom for SQL Server 数据库实例](#custom-sqlserver-WinAuth.settingUp.CreateDBInstance)
+ [步骤 6：创建 Windows 身份验证 SQL Server 登录名](#custom-sqlserver-WinAuth.settingUp.CreateLogins)
+ [步骤 7：使用 Kerberos 或 NTLM 身份验证](#custom-sqlserver-WinAuth.settingUp.KerbNTLM)

## 步骤 1：在 AD 中创建组织单位（OU）
<a name="custom-sqlserver-WinAuth.settingUp.CreateOU"></a>

请按照以下步骤在 AD 中创建组织单位：

**在 AD 中创建 OU**

1. 以域管理员身份连接到您的域 AD。

1. 打开 **Active Directory 用户和计算机**，然后选择要在其中创建 OU 的域。

1. 右键单击该域并选择**新建**，然后选择**组织单位**。

1. 为 OU 输入名称。

   启用**保护容器免遭意外删除**。

1. 选择**确定**。您的新 OU 将出现在您的域下。

对于 AWS Managed Microsoft AD，此 OU 的名称基于您在创建目录时键入的 NetBIOS 名称。此 OU 属于 AWS 并且包含您有权完全控制的所有 AWS 相关目录对象。默认情况下，此 OU 下存在两个子 OU，名为 **Computers 和 Users**。RDS Custom 创建的新 OU 是基于 NetBIOS 的 OU 的子级。

## 步骤 2：创建 AD 域用户
<a name="custom-sqlserver-WinAuth.settingUp.ADuser"></a>

域用户凭证用于 Secrets Manager 中的密钥。

**在您的 AD 中创建 AD 域用户**

1. 打开 **Active Directory 用户和计算机**，然后选择要在其中创建用户的域和 OU。

1. 右键单击**用户**对象并选择**新建**，然后选择**用户**。

1. 输入用户的名字、姓氏和登录名。单击**下一步**。

1. 输入用户的密码。请勿选择**用户下次登录时必须更改密码**或**账户已禁用**。单击**下一步**。

1. 单击**确定**。您的新用户将出现在您的域下。

## 步骤 3：将控制权委派给自托管式 AD 或 AWS Managed Microsoft AD 中的 AD 用户
<a name="custom-sqlserver-WinAuth.settingUp.Delegate"></a>

**将控制权委派给域中的 AD 域用户**

1. 打开 **Active Directory 用户和计算机** MMC 管理单元，然后选择您的域。

1. 右键单击您之前创建的 OU，然后选择**委派控制权**。

1. 在**委派控制权向导**中，单击**下一步**。

1. 在**用户或组**部分，单击**添加**。

1. 在**选择用户、计算机或组**中，输入您创建的 AD 用户，然后单击**检查名称**。如果您的 AD 用户检查成功，请单击**确定**。

1. 在**用户或组**部分，确认您的 AD 用户已添加，然后单击**下一步**。

1. 在**要委派的任务**部分，选择**创建要委派的自定义任务**，然后单击**下一步**。

1. 在 **Active Directory 对象类型**部分：

   选择**仅文件夹中的以下对象**。

   选择**计算机对象**

   选择**在此文件夹中创建选定对象**

   选择**删除此文件夹中的选定对象**，然后单击**下一步**。

1. 在**权限**部分：

   将**常规**保持为选中状态。

   选择**已验证写入 DNS 主机名**。

   选择**已验证写入服务主体名称**，然后单击**下一步**。

1. 在**完成控制权委派向导**中，请确认您的设置，然后单击**完成**。

## 步骤 4：创建密钥
<a name="custom-sqlserver-WinAuth.settingUp.ASM"></a>

在包含要加入 Active Directory 的 RDS Custom for SQL Server 数据库实例的同一 AWS 账户和区域中创建密钥。存储在[步骤 2：创建 AD 域用户](#custom-sqlserver-WinAuth.settingUp.ADuser)中创建的 AD 域用户的凭证。

------
#### [ Console ]
+ 在 AWS Secrets Manager 中，选择**存储新密钥**。
+ 对于**密钥类型**，请选择**其他密钥类型**。
+ 对于**键/值对**，请添加两个键：
  + 第一个键，即 `SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME`，并对于值输入您的 AD 用户的名称（不带域前缀）。
  + 对于第二个键，输入 `SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD`，然后输入域中 AD 用户的密码。
+ 在**加密密钥**中，输入创建 RDS Custom for SQL Server 实例时所用的相同 AWS KMS 密钥。
+ 对于**密钥名称**，选择以 `do-not-delete-rds-custom-` 开头的密钥名称，以允许您的实例配置文件访问此密钥。如果您想为密钥选择一个不同的名称，请更新 `RDSCustomInstanceProfile` 以访问**密钥名称**。
+ （可选）对于**描述**，输入密钥名称的描述。
+ 添加标签 `Key="AWSRDSCustom",Value="custom-sqlserver"` 
+ 单击**保存**，然后单击**下一步**。
+ 对于**配置轮换设置**，保留默认值并选择**下一步**。
+ 查看密钥的设置，然后单击**存储**。
+ 选择新密钥，然后复制**密钥 ARN** 的值。下一步将用它来设置您的 Active Directory。

------
#### [ CLI ]

在 CLI 中运行以下命令来创建密钥：

```
# Linux based
aws secretsmanager create-secret \
--name do-not-delete-rds-custom-DomainUserCredentails \ 
--description "Active directory user credentials for managing RDS Custom" \ 
--secret-string "{\"SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"tester\",\"SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"xxxxxxxx\"}" \
--kms-key-id <RDSCustomKMSKey> \
--tags Key="AWSRDSCustom",Value="custom-sqlserver"

# Windows based
aws secretsmanager create-secret ^
--name do-not-delete-rds-custom-DomainUserCredentails ^ 
--description "Active directory user credentials for managing RDS Custom" ^
--secret-string "{\"SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"tester\",\"SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"xxxxxxxx\"}" ^
--kms-key-id <RDSCustomKMSKey> ^
--tags Key="AWSRDSCustom",Value="custom-sqlserver"
```

------

## 步骤 5：创建或修改 RDS Custom for SQL Server 数据库实例
<a name="custom-sqlserver-WinAuth.settingUp.CreateDBInstance"></a>

创建或修改 RDS Custom for SQL Server 数据库实例，以便与您的目录一起使用。您可以使用控制台、CLI 或 RDS API 将数据库实例与目录关联。您可以通过下列方式之一来执行该操作：
+ 使用控制台、[create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) CLI 命令或 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) RDS API 操作创建新的 SQL Server 数据库实例。

  有关说明，请参阅[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)。
+ 使用控制台、[modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 命令或 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 操作修改现有 SQL Server 数据库实例。

  有关说明，请参阅[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。
+ 使用控制台、[restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) CLI 命令或 [RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) RDS API 操作，从数据库快照还原 SQL Server 数据库实例。

  有关说明，请参阅[还原到数据库实例](USER_RestoreFromSnapshot.md)。
+ 使用控制台、[restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) CLI 命令或 [RestoreDBInstanceToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) RDS API 操作，将 SQL Server 数据库实例还原到某个时间点。

  有关说明，请参阅[将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)。

**注意**  
如果已手动将 RDS Custom for SQL Server 实例加入 AD，请检查 [网络配置端口规则](custom-sqlserver-WinAuth.NWConfigPorts.md) 和 [网络验证](custom-sqlserver-WinAuth.NWValidation.md) 的设置，然后完成步骤 1 至步骤 4。将 `--domain-fqdn`、`--domain-ou` 和 `--domain-auth-secret-arn` 更新到您的 AD，以便在 RDS Custom 中注册域加入凭证和配置，以监控、注册 CNAME 并采取恢复操作。

使用 AWS CLI 时，数据库实例需要以下参数才能使用您创建的目录：
+ 对于 `--domain-fqdn` 参数，请使用自托管式 AD 的完全限定域名。
+ 对于 `--domain-ou` 参数，请使用您在自托管式 AD 中创建的 OU。
+ 对于 `--domain-auth-secret-arn` 参数，请使用您创建的**密钥 ARN** 的值。

**重要**  
如果您修改数据库实例，以加入自托管式 AD 域或 AWS Managed Microsoft AD 或者从中删除，则需要重启数据库实例才能使修改生效。您可以选择立即应用更改，也可以等到下一个维护时段。选择**立即应用**选项会导致单可用区数据库实例停机。多可用区数据库实例集群会在完成重启之前执行失效转移。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

以下 CLI 命令创建一个新的 RDS Custom for SQL Server 数据库实例并将其加入自托管式或 AWS Managed Microsoft AD 域。

对于 Linux、macOS 或 Unix：

```
aws rds create-db-instance  \
--engine custom-sqlserver-se \
--engine-version 15.00.4312.2.v1 \
--db-instance-identifier my-custom-instance \
--db-instance-class db.m5.large \
--allocated-storage 100 --storage-type io1 --iops 1000 \
--master-username my-master-username \
--master-user-password my-master-password \
--kms-key-id  my-RDSCustom-key-id \
--custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance  \
--domain-fqdn "corp.example.com" \
--domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" \
--domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" \
--db-subnet-group-name my-DB-subnet-grp \
--vpc-security-group-ids  my-securitygroup-id \
--no-publicly-accessible \
--backup-retention-period 3 \
--port 8200 \
--region us-west-2 \
--no-multi-az
```

对于 Windows：

```
aws rds create-db-instance  ^
--engine custom-sqlserver-se ^
--engine-version 15.00.4312.2.v1 ^
--db-instance-identifier my-custom-instance ^
--db-instance-class db.m5.large ^
--allocated-storage 100 --storage-type io1 --iops 1000 ^
--master-usernamemy-master-username ^
--master-user-password my-master-password ^
--kms-key-id  my-RDSCustom-key-id ^
--custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance  ^
--domain-fqdn "corp.example.com" ^
--domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" ^
--domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" ^
--db-subnet-group-name my-DB-subnet-grp ^
--vpc-security-group-ids  my-securitygroup-id ^
--no-publicly-accessible ^
--backup-retention-period 3 ^
--port 8200 ^
--region us-west-2 ^
--no-multi-az
```

**重要**  
如果您的 AWS Managed Microsoft AD 的 NetBIOS 为 **corpexample**，那么它本身就会显示为 OU。之前创建的任何新 OU 都将显示为嵌套 OU。对于 AWS Managed Microsoft AD，将 `--domain-ou` 设置为 `"OU=RDSCustomOU,OU=corpexample,DC=corp,DC=example,DC=com"`。

以下命令将现有 RDS Custom for SQL Server 数据库实例修改为使用 Active Directory 域。

对于 Linux、macOS 或 Unix：

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --domain-fqdn "corp.example.com" \
    --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" \
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" \
```

对于 Windows：

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --domain-fqdn "corp.example.com" ^
    --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" ^
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" ^
```

以下 CLI 命令从 Active Directory 域中删除 RDS Custom for SQL Server 数据库实例。

对于 Linux、macOS 或 Unix：

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --disable-domain
```

对于 Windows：

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --disable-domain
```

使用控制台创建或修改实例时，单击**启用 Microsoft SQL Server Windows 身份验证**以查看以下选项。

![\[Microsoft SQL Server Windows 身份验证目录\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/custom-sqs-WinAuth.png)


您负责确保您的域 FQDN 解析为域控制器 IP 地址。如果域控制器 IP 未解析，则域加入操作将失败，但会成功创建 RDS Custom for SQL Server 实例。有关问题排查信息，请参阅[Active Directory 故障排除](custom-sqlserver-WinAuth.Troubleshoot.md)。

## 步骤 6：创建 Windows 身份验证 SQL Server 登录名
<a name="custom-sqlserver-WinAuth.settingUp.CreateLogins"></a>

使用 Amazon RDS 主用户凭证连接 SQL Server 数据库实例，就像连接任何其他数据库实例一样。由于数据库实例已加入 AD 域，因此您可以预配置 SQL Server 登录名和用户。您可以通过 AD 域中的 AD 用户和组实用程序执行此操作。通过对这些 Windows 登录名授予和撤销标准 SQL Server 权限来管理数据库权限。

对于 AD 用户，要对 SQL Server 进行身份验证，AD 用户或其所属的 Active Directory 组必须存在 SQL Server Windows 登录名。访问权限的精细控制是通过对这些 SQL Server 登录名授予和撤销权限来处理的。AD 用户没有 SQL Server 登录名，或者用户所属 AD 组中的登录名无法访问 SQL Server 数据库实例。

创建 AD SQL Server 登录名需要 `ALTER ANY LOGIN` 权限。如果您尚未使用此权限创建任何登录名，请使用 SQL Server 身份验证以数据库实例的主用户身份进行连接，并在主用户的上下文下创建 AD SQL Server 登录名。

您可以运行数据定义语言（DDL）命令（如以下示例），为 AD 用户或组创建 SQL Server 登录名。

```
USE [master]
GO
CREATE LOGIN [mydomain\myuser] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
GO
```

域中用户（人和应用程序）现在均可从加入域的客户端计算机使用 Windows 身份验证连接到 RDS Custom for SQL Server 实例。

## 步骤 7：使用 Kerberos 或 NTLM 身份验证
<a name="custom-sqlserver-WinAuth.settingUp.KerbNTLM"></a>

### 使用 RDS 端点进行 NTLM 身份验证
<a name="custom-sqlserver-WinAuth.settingUp.KerbNTLM.NTLM"></a>

每个 Amazon RDS 数据库实例都有一个端点，每个端点都包含数据库实例的 DNS 名称和端口号。要使用 SQL 客户端应用程序连接到数据库实例，您需要该数据库实例的 DNS 名称和端口号。要使用 NTLM 身份验证进行身份验证，必须连接到 RDS 端点。

在计划内数据库维护或计划外服务中断期间，Amazon RDS 将自动失效转移到最新辅助数据库，以便操作能够在不进行手动干预的情况下快速恢复。主实例和辅助实例使用相同的端点，其物理网络地址作为失效转移过程的一部分转换到辅助实例。在失效转移时，您不必重新配置应用程序。

### Kerberos 身份验证
<a name="custom-sqlserver-WinAuth.settingUp.KerbNTLM.Kerb"></a>

RDS Custom for SQL Server 的基于 Kerberos 的身份验证要求连接到特定的服务主体名称（SPN）。但是，在失效转移事件发生后，应用程序可能不知道新 SPN。为了解决这个问题，RDS Custom for SQL Server 提供了一个基于 Kerberos 的端点。

基于 Kerberos 的端点遵循一种特定的格式。如果您的 RDS 端点为 `rds-instance-name.account-region-hash.aws-region.rds.amazonaws.com`，则相应基于 Kerberos 的端点将为 `rds-instance-name.account-region-hash.aws-region.awsrds.fully qualified domain name (FQDN)`。

例如，如果 RDS 端点为 `ad-test.cocv6zwtircu.us-east-1.rds.amazonaws.com`，域名为 `corp-ad.company.com`，则基于 Kerberos 的端点将为 `ad-test.cocv6zwtircu.us-east-1.awsrds.corp-ad.company.com`。

这个基于 Kerberos 的端点可用于使用 Kerberos 对 SQL Server 实例进行身份验证，即使在失效转移事件发生后也是如此，因为端点会自动更新为指向主 SQL Server 实例的新 SPN。

### 查找您的 CNAME
<a name="custom-sqlserver-WinAuth.settingUp.KerbNTLM.CNAME"></a>

要查找您的 CNAME，请连接到域控制器并打开 **DNS 管理器**。导航到**正向查找区域**和您的 FQDN。

浏览 **awsrds**、**aws-region**，以及**账户和区域特定的哈希值**。

如果您要连接 RDS Custom EC2 实例并尝试使用 CNAME 在本地连接到数据库，则您的连接将使用 NTLM 身份验证而不是 Kerberos。

如果从远程客户端连接 CNAME 后返回了 NTLM 连接，请检查所需端口是否已列入允许列表。

要检查您的连接是否使用 Kerberos，请运行以下查询：

```
SELECT net_transport, auth_scheme
    FROM sys.dm_exec_connections
    WHERE session_id = @@SSPID;
```

# 在域中管理数据库实例
<a name="custom-sqlserver-WinAuth.ManagingDBI"></a>

 您可以使用控制台、AWS CLI 或 Amazon RDS API 来管理数据库实例及其与您的域的关系。例如，您可以将数据库实例移入域、移出域或在域之间移动。

 例如，使用 Amazon RDS API，您可以执行下列操作：
+  要为失败的成员资格重新尝试域加入，请使用 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API 操作并指定当前成员资格的目录 ID。
+  要为成员资格更新 IAM 角色名称，请使用 `ModifyDBInstance` API 操作并指定当前成员资格的目录 ID 和新的 IAM 角色。
+  要从域中删除数据库实例，请使用 `ModifyDBInstance` API 操作并指定 `none` 作为域参数。
+  要将数据库实例从一个域移至另一个域，请使用 `ModifyDBInstance` API 操作并指定新域的域标识符作为域参数。
+  要列出每个数据库实例的成员资格，请使用 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/DescribeDBInstances.html) API 操作。

## 还原 RDS Custom for SQL Server 数据库实例并将其添加到 Active Directory 域
<a name="custom-sqlserver-WinAuth.ManagingDBI.Restoring"></a>

您可以还原数据库快照或对 SQL Server 数据库实例执行时间点故障恢复（PITR），然后将其添加到 Active Directory 域。数据库实例还原后，使用[步骤 5：创建或修改 RDS Custom for SQL Server 数据库实例](custom-sqlserver-WinAuth.settingUp.md#custom-sqlserver-WinAuth.settingUp.CreateDBInstance)中介绍的过程修改此实例以将数据库实例添加到 AD 域中。

# 了解域成员资格
<a name="custom-sqlserver-WinAuth.Understanding"></a>

 在创建或修改数据库实例后，实例将成为域的成员。AWS 控制台将指示数据库实例的域成员资格状态。数据库实例的状态可以是以下状态之一：
+  **已联接** – 实例是域的成员。
+  **正在联接** – 实例正处于成为域成员的过程中。
+  **待联接** – 实例成员资格待定。
+  **pending-maintenance-join** – AWS将在下一计划维护期间尝试使实例成为域成员。
+  **待删除** – 等待从域中删除实例。
+  **pending-maintenance-removal** – AWS将在下一计划维护期间尝试从域中删除实例。
+  **失败** – 配置问题阻碍实例联接域。在重新发出实例修改命令之前检查并修复配置。
+  **正在删除** – 正从域中删除实例。

成为域成员的请求可能因网络连接问题或不正确的 IAM 角色而失败。例如，您可能会创建数据库实例或修改现有实例，并且尝试使数据库成为某个域的成员会失败。在这种情况下，您重新发出命令以创建或修改数据库实例，或者修改新创建的实例以加入域。

# Active Directory 故障排除
<a name="custom-sqlserver-WinAuth.Troubleshoot"></a>

以下是您在设置或修改 AD 时可能遇到的问题。


| 错误代码 | 描述 | 常见原因 | 故障排除建议 | 
| --- | --- | --- | --- | 
| 错误 2/0x2 | 系统找不到指定的文件。 | 使用 `—domain-ou` 参数指定的组织单位（OU）的格式或位置无效。通过 AWS Secrets Manager 指定的域服务账户缺少加入 OU 所需的权限。 | 查看 `—domain-ou` 参数。确保域服务账户拥有相应的 OU 权限。 | 
| 错误 5/0x5 | 访问被拒绝。 | 域服务账户的权限配置不正确，或者域中已经存在该计算机账户。 | 查看域中的域服务账户权限，并验证 RDS 计算机账户在域中是否重复。您可以通过在 RDS Custom for SQL Server 数据库实例上运行 `SELECT @@SERVERNAME` 来验证 RDS 计算机账户的名称。如果您使用的是多可用区，请尝试通过失效转移重启，然后再次验证 RDS 计算机账户。有关更多信息，请参阅 [重启数据库实例](USER_RebootInstance.md)。 | 
| 错误 87/0x57 | 参数不正确。 | 通过 AWS Secrets Manager 指定的域服务账户不具备相应的权限。用户配置文件也可能已损坏。 | 查看域服务账户的要求。 | 
| 错误 234/0xEA | 指定的组织单位（OU）不存在。 | 使用 `—domain-ou` 参数指定的 OU 在您的 AD 中不存在。 | 查看 `—domain-ou` 参数并确保指定的 OU 在您的 AD 中存在。 | 
| 错误 1326/0x52E | 用户名或密码不正确。 | AWS Secrets Manager 中提供的域服务账户凭证包含未知的用户名或错误的密码。您的 AD 中也可能已禁用域账户。 | 确保 AWS Secrets Manager 中提供的凭证正确无误，并且在您的 Active Directory 中启用了域账户。 | 
| 错误 1355/0x54B | 指定的域不存在或无法访问。 | 域已关闭、指定的 DNS IP 集无法访问，或指定的 FQDN 无法访问。 | 查看 `—domain-dns-ips` 和 `—domain-fqdn` 参数，确保正确。查看您的 RDS Custom for SQL Server 数据库实例的网络配置，并确保您的 AD 可以访问。 | 
| 错误 1722/0x6BA | RPC 服务器不可用。 | 连接您的 AD 域的 RPC 服务时出现问题。这可能由于服务或网络问题导致。 | 验证 RPC 服务是否正在您的域控制器上运行，以及是否可以在您的域上从 RDS Custom for SQL Server 数据库实例访问 TCP 端口 `135` 和 `49152-65535`。 | 
| 错误 2224/0x8b0 | 用户账户已存在。 | 正在尝试添加到您 AD 的计算机账户已经存在。 | 通过在您的 RDS Custom for SQL Server 数据库实例上运行 `SELECT @@SERVERNAME` 来识别计算机账户，然后小心地将其从您的 AD 中删除。 | 
| 错误 2242/0x8c2 | 此用户的密码已过期。 | 通过 AWS Secrets Manager 指定的域服务账户的密码已过期。 | 更新用于将 RDS Custom for SQL Server 数据库实例加入 AD 的域服务账户的密码。 | 

# 管理 RDS Custom for SQL Server 的多可用区部署
<a name="custom-sqlserver-multiaz"></a>

 在 RDS Custom for SQL Server 的多可用区数据库实例部署中，Amazon RDS 会自动在不同可用区（AZ）中预调配和维护一个同步备用副本。主数据库实例可以跨可用区同步复制到备用副本以提供数据冗余。

**重要**  
RDS Custom for SQL Server 的多可用区部署与 RDS for SQL Server 的多可用区部署不同。与 RDS for SQL Server 的多可用区不同，对于 RDS Custom for SQL Server，在创建多可用区数据库实例之前，您必须设置先决条件，因为 RDS Custom 在您自己的账户内运行，这需要权限。  
如果您未完成先决条件，则多可用区数据库实例可能无法运行，或者自动恢复为单可用区数据库实例。有关先决条件的更多信息，请参阅[RDS Custom for SQL Server 的多可用区部署的先决条件](custom-sqlserver-multiaz.prerequisites.md)。

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

![\[RDS Custom for SQL Server 支持多可用区。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/custom-sqlserver-multiaz-architecture.png)


您可以通过在创建 RDS Custom 数据库实例时指定多可用区，来创建 RDS Custom for SQL Server 多可用区部署。您可以使用控制台，通过修改数据库实例并指定多可用区选项，将现有 RDS Custom for SQL Server 数据库实例转换为多可用区部署。还可以使用 AWS CLI 或 Amazon RDS API 指定多可用区数据库实例部署。

RDS 控制台显示备用副本的可用区（辅助可用区）。还可以使用 `describe-db-instances` CLI 命令或 `DescribeDBInstances` API 操作来查找辅助可用区。

与单可用区部署相比，具有多可用区部署的 RDS Custom for SQL Server 数据库实例的写入和提交延迟可能会增加。这种增加可能是由于数据库实例之间的同步数据复制造成的。尽管 AWS 设计用于在可用区之间提供低延迟网络连接，但如果您的部署故障转移到备用副本，延迟可能会发生变化。

**注意**  
对于生产工作负载，我们建议您使用具有预调配 IOPS（每秒输入/输出操作数）的数据库实例类，以获得快速、一致的性能。有关数据库实例类的更多信息，请参阅 [Amazon RDS Custom for SQL Server 的要求和限制](custom-reqs-limits-MS.md)。

**Topics**
+ [区域和版本可用性](#custom-sqlserver-multiaz.regionversion)
+ [RDS Custom for SQL Server 的多可用区部署的限制](#custom-sqlserver-multiaz.limitations)
+ [RDS Custom for SQL Server 的多可用区部署的先决条件](custom-sqlserver-multiaz.prerequisites.md)
+ [创建 RDS Custom for SQL Server 多可用区部署](#custom-sqlserver-multiaz.creating)
+ [将 RDS Custom for SQL Server 的单可用区部署修改为多可用区部署](custom-sqlserver-multiaz.modify-saztomaz.md)
+ [将 RDS Custom for SQL Server 多可用区部署修改为单可用区部署](custom-sqlserver-multiaz.modify-maztosaz.md)
+ [RDS Custom for SQL Server 多可用区部署的失效转移过程](custom-sqlserver-multiaz.failover.md)

## 区域和版本可用性
<a name="custom-sqlserver-multiaz.regionversion"></a>

以下 SQL Server 版本支持 RDS Custom for SQL Server 的多可用区部署：
+ SQL Server 2022 和 2019：企业版、标准版、Web 版和开发版

**注意**  
SQL Server 2019 CU8（15.00.4073.23）或更低版本不支持 RDS Custom for SQL Server 的多可用区部署。

RDS Custom for SQL Server 的多可用区部署在 RDS Custom for SQL Server 可用的所有区域中均可用。有关 RDS Custom for SQL Server 的多可用区部署的区域可用性的更多信息，请参阅 [支持 RDS Custom for SQL Server 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.sq)。

## RDS Custom for SQL Server 的多可用区部署的限制
<a name="custom-sqlserver-multiaz.limitations"></a>

RDS Custom for SQL Server 的多可用区部署具有以下限制：
+ 不支持跨区域多可用区部署。
+ 您不能将辅助数据库实例配置为接受数据库读取活动。
+ 当您在多可用区部署中使用自定义引擎版本（CEV）时，辅助数据库实例也将使用相同的 CEV。辅助数据库实例无法使用不同的 CEV。

# RDS Custom for SQL Server 的多可用区部署的先决条件
<a name="custom-sqlserver-multiaz.prerequisites"></a>

如果您具有现有的 RDS Custom for SQL Server 单可用区部署，则在将其修改为多可用区部署之前，需要满足以下附加先决条件。您可以选择手动完成先决条件，也可以选择使用提供的 CloudFormation 模板完成先决条件。最新的 CloudFormation 模板同时包含适用于单可用区部署和多可用区部署的先决条件。

**重要**  
为了简化设置，我们建议您使用网络设置说明中提供的最新 CloudFormation 模板文件来创建先决条件。有关更多信息，请参阅 [使用 CloudFormation 进行配置](custom-setup-sqlserver.md#custom-setup-sqlserver.cf)。

**注意**  
将现有的 RDS Custom for SQL Server 单可用区部署修改为多可用区部署时，必须先完成这些先决条件。如果您未完成先决条件，则多可用区设置将失败。要完成先决条件，请执行[将 RDS Custom for SQL Server 的单可用区部署修改为多可用区部署](custom-sqlserver-multiaz.modify-saztomaz.md)中的步骤。
+ 更新 RDS 安全组入站和出站规则以允许端口 1120。
+ 在您的私有网络访问控制列表（ACL）中添加一条规则，以允许数据库实例 VPC 使用 TCP 端口 `0-65535`。
+ 创建新的 Amazon SQS VPC 端点，以允许 RDS Custom for SQL Server 数据库实例与 SQS 通信。
+ 更新实例配置文件角色中的 SQS 权限。

## 创建 RDS Custom for SQL Server 多可用区部署
<a name="custom-sqlserver-multiaz.creating"></a>

要创建 RDS Custom for SQL Server 多可用区部署，请按照[为 Amazon RDS Custom for SQL Server 创建并连接到数据库实例](custom-creating-sqlserver.md)中的步骤操作。

**重要**  
为了简化设置，我们建议您使用网络设置说明中提供的最新 CloudFormation 模板文件。有关更多信息，请参阅 [使用 CloudFormation 进行配置](custom-setup-sqlserver.md#custom-setup-sqlserver.cf)。

创建多可用区部署需要几分钟才能完成。

# 将 RDS Custom for SQL Server 的单可用区部署修改为多可用区部署
<a name="custom-sqlserver-multiaz.modify-saztomaz"></a>

您可以将现有的 RDS Custom for SQL Server 数据库实例从单可用区部署修改为多可用区部署。修改数据库实例时，Amazon RDS 会执行多项操作：
+ 拍摄主数据库实例的快照。
+ 从快照中为备用副本创建新卷。这些卷在后台初始化，并在数据完全初始化后达到最大卷性能。
+ 开启主数据库实例与辅助数据库实例之间的同步块级复制。

**重要**  
我们建议您避免在高峰活动期在生产数据库实例上将 RDS Custom for SQL Server 数据库实例从单可用区部署修改为多可用区部署。

AWS 使用快照创建备用实例，以避免在从单可用区转换到多可用区时出现停机，但是在转换为多可用区期间和转换后，性能可能会受到影响。对于对写入延迟敏感的工作负载而言，这可能会产生很大的影响。尽管此功能允许快速从快照中还原大型卷，但由于同步复制，该功能可能会导致 I/O 操作的延迟增加。这种延迟可能会影响您的数据库性能。

**注意**  
如果您在 2024 年 8 月 29 日之前创建了 RDS Custom for SQL Server 数据库实例，请在修改之前修补到最新的次要版本。  
对于 SQL Server 2019 实例，请将数据库引擎版本升级到 `15.00.4410.1.v1` 或更高版本。
对于 SQL Server 2022 实例，请将数据库引擎版本升级到 `16.00.4150.1.v1` 或更高版本。

**Topics**
+ [使用 CloudFormation 配置先决条件，以将单可用区部署修改为多可用区部署](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf)
+ [手动配置先决条件，以将单可用区部署修改为多可用区部署](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.manual)
+ [使用 RDS 控制台、AWS CLI 或 RDS API 进行修改。](#custom-sqlserver-multiaz.modify-saztomaz-afterprereqs)

## 使用 CloudFormation 配置先决条件，以将单可用区部署修改为多可用区部署
<a name="custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf"></a>

要使用多可用区部署，必须确保应用了满足先决条件的最新 CloudFormation 模板，或者手动配置最新的先决条件。如果您已经应用了最新的 CloudFormation 先决条件模板，则可以跳过这些步骤。

使用 CloudFormation 配置 RDS Custom for SQL Server 多可用区部署先决条件

1. 通过以下网址打开 CloudFormation 控制台：[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)。

1. 要启动创建堆栈向导，请选择用于创建单可用区部署的现有堆栈，然后选择**更新**。

   此时会显示**更新堆栈**页面。

1. 对于**先决条件 - 准备模板**，请选择**替换当前模板**。

1. 对于 **Select Template**（选择模板），执行以下操作：

   1. 下载最新的 CloudFormation 模板文件。打开链接 [custom-sqlserver-onboard.zip](samples/custom-sqlserver-onboard.zip) 的上下文（右键单击）菜单，然后选择 **Save Link As**（将链接另存为）。

   1. 将 `custom-sqlserver-onboard.json` 文件保存并提取到您的计算机中。

   1. 对于 **Template source**(模板来源)，选择 **Upload a template file**(上载模板文件)。

   1. 对于 **Choose file**（选择文件），请导航到 `custom-sqlserver-onboard.json` 并选择它。

1. 选择**下一步**。

   此时将出现 **Specify stack details**（指定堆栈详细信息）页面。

1. 要保留原定设置选项，请选择 **Next**（下一步)。

   将出现**高级选项**页面。

1. 要保留原定设置选项，请选择 **Next**（下一步)。

1. 要保留原定设置选项，请选择 **Next**（下一步)。

1. 在**检查更改**页面上，执行以下操作：

   1. 对于**功能**，请选中****我确认 CloudFormation 可能使用自定义名称创建 IAM 资源****复选框。

   1. 选择**提交**。

1. 验证更新是否成功。成功操作的状态将显示 `UPDATE_COMPLETE`。

如果更新失败，则将回滚更新过程中指定的任何新配置。现有资源将仍然可用。例如，如果添加编号为 18 和 19 的网络 ACL 规则，但存在编号相同的现有规则，则更新将返回以下错误：`Resource handler returned message: "The network acl entry identified by 18 already exists.`。在这种情况下，您可以修改现有 ACL 规则以使用小于 18 的编号，然后重试更新。

## 手动配置先决条件，以将单可用区部署修改为多可用区部署
<a name="custom-sqlserver-multiaz.modify-saztomaz-prereqs.manual"></a>

**重要**  
为了简化设置，我们建议您使用网络设置说明中提供的最新 CloudFormation 模板文件。有关更多信息，请参阅 [使用 CloudFormation 配置先决条件，以将单可用区部署修改为多可用区部署](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf)。

如果您选择手动配置先决条件，请执行以下任务。

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 打开 Amazon VPC 控制台。

1. 选择**端点**。**创建端点**页面显示。

1. 对于**服务类别**，选择 **AWS 服务**。

1. 在**服务**中，搜索 *SQS*。

1. 在 **VPC** 中，选择在其中部署 RDS Custom for SQL Server 数据库实例的 VPC。

1. 在**子网**中，选择在其中部署 RDS Custom for SQL Server 数据库实例的子网。

1. 在**安全组**中，选择 *-vpc-endpoint-sg* 组。

1. 对于**策略**，选择**自定义**。

1. 在自定义策略中，将 *AWS partition*、*Region*、*accountId* 和 *IAM-Instance-role* 替换为您自己的值。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Condition": {
                   "StringLike": {
                       "aws:ResourceTag/AWSRDSCustom": "custom-sqlserver"
                   }
               },
               "Action": [
                   "SQS:SendMessage",
                   "SQS:ReceiveMessage",
                   "SQS:DeleteMessage",
                   "SQS:GetQueueUrl"
               ],
               "Resource": "arn:aws:sqs:us-east-1:111122223333:do-not-delete-rds-custom-*",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/{IAM-Instance-role}"
               }
           }
       ]
   }
   ```

------

1.  使用访问 Amazon SQS 的权限更新**实例配置文件**。将 *AWS partition*、*Region* 和 *accountId* 替换为您自己的值。

   ```
                           {
       "Sid": "SendMessageToSQSQueue",
       "Effect": "Allow",
       "Action": [
         "SQS:SendMessage",
         "SQS:ReceiveMessage",
         "SQS:DeleteMessage",                                    
         "SQS:GetQueueUrl"
   
       ],
       "Resource": [
         {
           "Fn::Sub": "arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:do-not-delete-rds-custom-*"
         }
       ],
       "Condition": {
         "StringLike": {
           "aws:ResourceTag/AWSRDSCustom": "custom-sqlserver"
         }
       }
     } 
                           >
   ```

1. 更新 Amazon RDS 安全组的入站和出站规则以允许端口 1120。

   1. 在**安全组**中，选择 *-rds-custom-instance-sg* 组。

   1. 对于**入站规则**，创建**自定义 TCP** 规则，以允许源 *-rds-custom-instance-sg* 组使用端口 *1120*。

   1. 对于**出站规则**，创建**自定义 TCP** 规则，以允许端口 *1120* 连接到目标 *-rds-custom-instance-sg* 组。

1. 在您的私有网络访问控制列表（ACL）中添加一条规则，以允许数据库实例的源子网使用 TCP 端口 `0-65535`。
**注意**  
创建**入站规则**和**出站规则**时，请记下现有的最大**规则编号**。您创建的新规则的**规则编号**必须小于 100，且与任何现有**规则编号**均不匹配。

   1. 在**网络 ACL** 中，选择 *-private-network-acl* 组。

   1. 对于**入站规则**，创建**全部 TCP** 规则，以允许将 TCP 端口 `0-65535` 用于来自 *privatesubnet1* 和 *privatesubnet2* 的源。

   1. 对于**出站规则**，创建**全部 TCP** 规则，以允许 TCP 端口 `0-65535` 连接到目标 *privatesubnet1* 和 *privatesubnet2*。

## 使用 RDS 控制台、AWS CLI 或 RDS API 进行修改。
<a name="custom-sqlserver-multiaz.modify-saztomaz-afterprereqs"></a>

完成先决条件后，您可以使用 RDS 控制台、AWS CLI 或 RDS API，将 RDS Custom for SQL Server 数据库实例从单可用区部署修改为多可用区部署。

### 控制台
<a name="custom-sqlserver-multiaz.modify-saztomaz.Console"></a>

**将现有 RDS Custom for SQL Server 单可用区部署修改为多可用区部署**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在 Amazon RDS 控制台中，选择**数据库**。

   随后会显示**数据库**窗格。

1. 选择要修改的 RDS Custom for SQL Server 数据库实例。

1. 对于**操作**中，选择**转换为多可用区部署**。

1. 在**确认**页面上，选择**立即应用**以立即应用更改。选择此选项不会导致停机，但可能会对性能产生影响。或者，您可以选择在下一个维护时段内应用更新。有关更多信息，请参阅 [使用计划修改设置](USER_ModifyInstance.ApplyImmediately.md)。

1. 在**确认**页面上，选择**转换为多可用区**。

### AWS CLI
<a name="custom-sqlserver-multiaz.modify-saztomaz.CLI"></a>

要使用 AWS CLI 转换为多可用区数据库实例部署，请调用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令并设置 `--multi-az` 选项。指定数据库实例标识符以及要修改的其他选项的值。有关各选项的信息，请参阅 [数据库实例的设置](USER_ModifyInstance.Settings.md)。

**Example**  
以下代码通过包含 `--multi-az` 选项来修改 `mycustomdbinstance`。将在下一维护时段使用 `--no-apply-immediately` 应用这些更改。使用 `--apply-immediately` 可立即应用更改。有关更多信息，请参阅 [使用计划修改设置](USER_ModifyInstance.ApplyImmediately.md)。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier mycustomdbinstance \
    --multi-az \
    --no-apply-immediately
```
对于：Windows  

```
aws rds modify-db-instance ^
    --db-instance-identifier mycustomdbinstance ^
    --multi-az  \ ^
    --no-apply-immediately
```

### RDS API
<a name="custom-sqlserver-multiaz.modify-saztomaz.API"></a>

要使用 RDS API 转换为多可用区数据库实例部署，请调用 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 操作并将 `MultiAZ` 参数设置为 true。

# 将 RDS Custom for SQL Server 多可用区部署修改为单可用区部署
<a name="custom-sqlserver-multiaz.modify-maztosaz"></a>

您可以将现有的 RDS Custom for SQL Server 数据库实例从多可用区部署修改为单可用区部署。

## 控制台
<a name="custom-sqlserver-multiaz.modify-maztosaz.Console"></a>

**将 RDS Custom for SQL Server 数据库实例从多可用区部署修改为单可用区部署。**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在 Amazon RDS 控制台中，选择**数据库**。

   随后会显示**数据库**窗格。

1. 选择要修改的 RDS Custom for SQL Server 数据库实例。

1. 对于**多可用区部署**，请选择**否**。

1. 在**确认**页面上，选择**立即应用**以立即应用更改。选择此选项不会导致停机，但可能会对性能产生影响。或者，您可以选择在下一个维护时段内应用更新。有关更多信息，请参阅 [使用计划修改设置](USER_ModifyInstance.ApplyImmediately.md)。

1. 在**确认**页面上，选择**修改数据库实例**。

## AWS CLI
<a name="custom-sqlserver-multiaz.modify-maztosaz.CLI"></a>

要使用 AWS CLI 将多可用区部署修改为单可用区部署，请调用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令并包含 `--no-multi-az` 选项。指定数据库实例标识符以及要修改的其他选项的值。有关各选项的信息，请参阅 [数据库实例的设置](USER_ModifyInstance.Settings.md)。

**Example**  
以下代码通过包含 `--no-multi-az` 选项来修改 `mycustomdbinstance`。将在下一维护时段使用 `--no-apply-immediately` 应用这些更改。使用 `--apply-immediately` 可立即应用更改。有关更多信息，请参阅 [使用计划修改设置](USER_ModifyInstance.ApplyImmediately.md)。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier mycustomdbinstance \
    --no-multi-az  \
    --no-apply-immediately
```
对于 Windows：  

```
aws rds modify-db-instance ^
    --db-instance-identifier mycustomdbinstance ^
    --no-multi-az \ ^
    --no-apply-immediately
```

## RDS API
<a name="custom-sqlserver-multiaz.modify-maztosaz.API"></a>

要使用 RDS API 将多可用区部署修改为单可用区部署，请调用 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 操作并将参数 `MultiAZ` 设置为 `false`。

# RDS Custom for SQL Server 多可用区部署的失效转移过程
<a name="custom-sqlserver-multiaz.failover"></a>

如果由于基础设施缺陷而导致数据库实例发生计划内或计划外的中断时，此时如果您已启用多可用区，则 Amazon RDS 会自动切换到另一个可用区中的备用副本。完成失效转移所用的时间取决于在主数据库实例变为不可用时的数据库活动和其他条件。失效转移时间通常为 60 – 120 秒。不过，事务较多或时间较长的恢复过程可能延长故障转移时间。完成失效转移后，RDS 控制台还需要一段时间才能显示新的可用区。

**注意**  
在通过失效转移重启数据库实例时，可以手动强制执行失效转移。有关重启数据库实例的更多信息，请参阅[重启数据库实例](USER_RebootInstance.md)。

Amazon RDS 会自动处理故障转移，因此，您可以尽快恢复数据库操作而无需管理干预。如果出现下表中描述的任一情况，主数据库实例会自动切换到备用副本：您可以在 RDS 事件日志中查看这些失效转移原因。


****  

| 故障转移原因 | 描述 | 
| --- | --- | 
| `The operating system for the RDS Custom for SQL Server Multi-AZ DB instance is being patched in an offline operation` | 在操作系统补丁或安全更新的维护时段内触发了故障切换。有关更多信息，请参阅 [维护数据库实例](USER_UpgradeDBInstance.Maintenance.md)。 | 
| `The primary host of the RDS Custom for SQL Server Multi-AZ DB instance is unhealthy.` | 多可用区数据库实例部署检测到受损的主数据库实例并进行故障转移。 | 
| `The primary host of the RDS Custom for SQL Server Multi-AZ DB instance is unreachable due to loss of network connectivity.` | RDS 监控检测到主数据库实例的网络可达性故障并触发了故障转移。 | 
| `The RDS Custom for SQL Server Multi-AZ DB instance was modified by the customer.` | 数据库实例修改触发了失效转移。有关更多信息，请参阅 [修改 RDS Custom for SQL Server 数据库实例](custom-managing.modify-sqlserver.md)。 | 
| `The storage volume of the primary host of the RDS Custom for SQL Server Multi-AZ DB instance experienced a failure.` | 多可用区数据库实例部署在主数据库实例上检测到存储问题并进行故障转移。 | 
| `The user requested a failover of the RDS Custom for SQL Server Multi-AZ DB instance.` | RDS Custom for SQL Server 多可用区数据库实例已通过失效转移重启。有关更多信息，请参阅 [重启数据库实例](USER_RebootInstance.md)。 | 
| `The RDS Custom for SQL Server Multi-AZ primary DB instance is busy or unresponsive.` | 主数据库实例没有响应。我们建议您尝试以下步骤： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-sqlserver-multiaz.failover.html)  | 

要确定多可用区数据库实例是否发生故障转移，您可以执行以下操作：
+ 将数据库事件订阅设置为在故障转移启动时向您发送电子邮件或 SMS 通知。有关事件的更多信息，请参阅 [使用 Amazon RDS 事件通知](USER_Events.md)。
+ 使用 RDS 控制台或 API 操作查看数据库事件。
+ 使用 RDS 控制台、CLI 或 API 操作查看 RDS Custom for SQL Server 多可用区数据库实例部署的当前状态。

## 使用 RDS Custom for SQL Server 多可用区部署的应用程序的存活时间（TTL）设置
<a name="custom-sqlserver-multiaz.ttldns"></a>

故障转移机制自动更改数据库实例的域名系统 (DNS) 记录，使其指向备用数据库实例。因此，您需要重新建立与数据库实例之间的所有现有连接。确保任何 DNS 缓存存活时间（TTL）配置值都较低，并验证您的应用程序不会长时间缓存 DNS。TTL 值较高可能会阻止应用程序在失效转移后快速重新连接到数据库实例。

# 备份和还原 Amazon RDS Custom for SQL Server 数据库实例
<a name="custom-backup-sqlserver"></a>

与 Amazon RDS 一样，RDS Custom 会在启用备份保留时创建并保存 RDS Custom for SQL Server 数据库实例的自动备份。您还可以手动备份数据库实例。自动备份由快照备份和事务日志备份组成。在您指定的备份时段内，将对数据库实例的整个存储卷进行快照备份。按固定间隔为符合 PITR 条件的数据库进行事务日志备份。RDS Custom 根据您指定的备份保留期保存数据库实例的自动备份。您可以使用自动备份将数据库实例恢复到备份保留期内的某个时间点。

您也可以手动进行快照备份。您可以随时从这些快照备份创建新的数据库实例。有关手动创建数据库快照的更多信息，请参阅[创建 RDS Custom for SQL Server 快照](custom-backup-sqlserver.creating.md)。

尽管快照备份在操作上用作完整备份，但您只需要为增量存储用量付费。RDS Custom 数据库实例的第一个快照包含完整数据库实例的数据。相同数据库的后续快照为增量快照，这意味着仅保存在最新快照后更改的数据。

**Topics**
+ [创建 RDS Custom for SQL Server 快照](custom-backup-sqlserver.creating.md)
+ [从 RDS Custom for SQL Server 数据库快照还原](custom-backup-sqlserver.restoring.md)
+ [将 RDS Custom for SQL Server 实例还原到某个时间点](custom-backup.pitr-sqs.md)
+ [删除 RDS Custom for SQL Server 快照](custom-backup-sqlserver.deleting.md)
+ [删除 RDS Custom for SQL Server 自动备份](custom-backup-sqlserver.deleting-backups.md)

# 创建 RDS Custom for SQL Server 快照
<a name="custom-backup-sqlserver.creating"></a>

RDS Custom for SQL Server 可创建数据库实例的存储卷快照，并备份整个数据库实例而不仅仅是单个数据库。创建快照时，请指定要备份哪个 RDS Custom for SQL Server 数据库实例。为您的快照命名，以便稍后通过它进行还原。

当您创建快照时，RDS Custom for SQL Server 会为卷 `(D:)` 创建 Amazon EBS 快照，该卷是附加到数据库实例的数据库卷。为了使快照轻松与特定数据库实例关联，请使用 `DBSnapshotIdentifier`、`DbiResourceId` 和 `VolumeType` 标记它们。

创建数据库快照会导致短暂的输入/输出暂停。此暂停可持续数秒到几分钟，具体取决于数据库实例的大小和类。快照创建时间因数据库的总计数和大小而异。要详细了解符合条件可执行时间点还原（PITR）操作的数据库数量，请参阅[每种实例类类型符合 PITR 条件的数据库数量](custom-backup.pitr-sqs.md#custom-backup.pitr.sqlserver.eligiblecountperinstance)。

由于快照包含整个存储卷，因此，文件（如临时文件）的大小也会影响创建快照创建时间。要了解创建快照的更多信息，请参阅 [为 Amazon RDS 的单可用区数据库实例创建数据库快照](USER_CreateSnapshot.md)。

使用控制台或 AWS CLI 创建 RDS Custom for SQL Server 快照。

## 控制台
<a name="USER_CreateSnapshot-sqlserver.CON"></a>

**创建 RDS Custom 快照**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases（数据库）**。

1. 在 RDS Custom 数据库实例列表中，选择您想拍摄快照的实例。

1. 对于**操作**，选择**拍摄快照**。

   将显示 **Take DB snapshot (拍摄数据库快照)** 窗口。

1. 在 **Snapshot name**（快照名称）框中，请输入快照的名称。

1. 选择**拍摄快照**。

## AWS CLI
<a name="USER_CreateSnapshot-sqlserver.CLI"></a>

您可以通过使用 [create-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html) AWS CLI 命令创建 RDS Custom 数据库实例的快照。

指定以下选项：
+ `--db-instance-identifier` – 标识要备份的 RDS Custom 数据库实例
+ `--db-snapshot-identifier` – 命名 RDS Custom 快照，以便以后通过它进行还原

在此示例中，您将给名为 `my-custom-instance` 的 RDS Custom 数据库实例创建名为 *`my-custom-snapshot`* 的数据库快照。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds create-db-snapshot \
2.     --db-instance-identifier my-custom-instance \
3.     --db-snapshot-identifier my-custom-snapshot
```
对于 Windows：  

```
1. aws rds create-db-snapshot ^
2.     --db-instance-identifier my-custom-instance ^
3.     --db-snapshot-identifier my-custom-snapshot
```

# 从 RDS Custom for SQL Server 数据库快照还原
<a name="custom-backup-sqlserver.restoring"></a>

在还原 RDS Custom for SQL Server 数据库实例时，需要提供数据库快照的名称以及新实例的名称。您不能从快照还原到现有的 RDS Custom 数据库实例。还原时将新建一个 RDS Custom for SQL Server 数据库实例。

从快照还原会将存储卷还原到拍摄快照的时间点。这将包括 `(D:)` 卷上存在的所有数据库和任何其它文件。

## 控制台
<a name="custom-backup-sqlserver.restoring.console"></a>

**要从数据库快照还原 RDS Custom 数据库实例**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**快照**。

1. 选择要从其还原的数据库快照。

1. 对于**操作**，选择**还原快照**。

1. 请在 **Restore DB instance**（还原数据库实例）页面上，为 **DB instance identifier**（数据库实例标识符）输入还原的 RDS Custom 数据库实例的名称。

1. 选择**还原数据库实例**。

## AWS CLI
<a name="custom-backup-sqlserver.restoring.CLI"></a>

您可以通过使用 [ restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) AWS CLI 命令还原 RDS Custom 数据库快照。

如果要从中还原的快照适用于私有数据库实例，请务必同时指定正确的 `db-subnet-group-name` 和 `no-publicly-accessible`。否则，数据库实例原定设置为可公开访问。以下选项为必填：
+ `db-snapshot-identifier` – 标识要从中进行还原的快照
+ `db-instance-identifier` – 指定要从数据库快照创建的 RDS Custom 数据库实例的名称
+ `custom-iam-instance-profile` – 指定与 RDS Custom 数据库实例的基础 Amazon EC2 实例关联的实例配置文件。

以下代码为 `my-custom-instance` 还原名为 `my-custom-snapshot` 的快照。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds restore-db-instance-from-db-snapshot \
  --db-snapshot-identifier my-custom-snapshot \
  --db-instance-identifier my-custom-instance \
  --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \
  --no-publicly-accessible
```
对于 Windows：  

```
aws rds restore-db-instance-from-db-snapshot ^
  --db-snapshot-identifier my-custom-snapshot ^
  --db-instance-identifier my-custom-instance ^
  --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^
  --no-publicly-accessible
```

# 将 RDS Custom for SQL Server 实例还原到某个时间点
<a name="custom-backup.pitr-sqs"></a>

您可以将数据库实例还原到某个特定时间点 (PITR)，以创建新数据库实例。要支持 PITR，您的数据库实例必须已启用备份保留期。

RDS Custom for SQL Server 数据库实例的最近可还原时间取决于多个因素，但通常为当前时间的 5 分钟内。要查看某个数据库实例的最近可还原时间，请使用 AWS CLI [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令，并查看该数据库实例的 `LatestRestorableTime` 字段中返回的值。要在 Amazon RDS 控制台中查看每个数据库实例的最近可还原时间，请选择**自动备份**。

您可以还原至备份保留期内的任何时间点。要查看每个数据库实例的最早可还原时间，请在 Amazon RDS 控制台中选择**自动备份**。

有关 PITR 的一般信息，请参阅[将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)。

**Topics**
+ [RDS Custom for SQL Server 的 PITR 注意事项](#custom-backup.pitr.sqlserver)
+ [每种实例类类型符合 PITR 条件的数据库数量](#custom-backup.pitr.sqlserver.eligiblecountperinstance)
+ [使数据库不符合 PITR 资格](#custom-backup.pitr.sqlserver.ineligible)
+ [Amazon S3 中的事务日志](#custom-backup.pitr.sqlserver.tlogs)
+ [使用 AWS 管理控制台、AWS CLI 或 RDS API 进行 PITR 还原。](#custom-backup.pitr-sqs-concli)

## RDS Custom for SQL Server 的 PITR 注意事项
<a name="custom-backup.pitr.sqlserver"></a>

在 RDS Custom for SQL Server 中，PITR 与 Amazon RDS 中的 PITR 有以下重要的区别：
+ PITR 仅还原数据库实例中的数据库。它不会还原操作系统或 C: 驱动器上的文件。
+ 对于 RDS Custom for SQL Server 数据库实例，数据库将自动备份，并且只有在以下条件下才有资格用于 PITR：
  + 数据库处于联机状态。
  + 它的还原模式设置为 `FULL`。
  + 它是可写的。
  + 它的物理文件放在 D: 驱动器上。
  + 它未在 `rds_pitr_blocked_databases` 表中列出。有关更多信息，请参阅 [使数据库不符合 PITR 资格](#custom-backup.pitr.sqlserver.ineligible)。
+ 这些符合 PITR 条件的数据库由其数据库 ID 的顺序决定。RDS Custom for SQL Server 允许每个数据库实例最多 5000 个数据库。不过，针对 RDS Custom for SQL Server 数据库实例，PITR 操作还原的数据库的最大数量取决于实例类的类型。有关更多信息，请参阅 [每种实例类类型符合 PITR 条件的数据库数量](#custom-backup.pitr.sqlserver.eligiblecountperinstance)。

  其它不属于 PITR 的数据库可以从数据库快照中还原，包括用于 PITR 的自动快照备份。
+ 添加新数据库、重命名数据库或还原符合 PITR 条件的数据库将启动数据库实例的快照。
+ 当数据库实例进行扩展计算操作时，符合 PITR 条件的最大数据库数量会发生变化，具体取决于目标实例类的类型。如果实例已纵向扩展，同时允许该实例上的更多数据库符合 PITR 条件，则会拍摄新的快照。
+ 还原的数据库的名称与源数据库实例中的名称相同。您不能指定不同的名称。
+ `AWSRDSCustomSQLServerIamRolePolicy` 需要访问其它 AWS 服务。有关更多信息，请参阅 [将访问策略添加到 AWSRDSCustomSQLServerInstanceRole](custom-setup-sqlserver.md#custom-setup-sqlserver.iam.add-policy)。
+ RDS Custom for SQL Server 不支持时区更改。如果更改操作系统或数据库实例时区，PITR（和其他自动化）将无法正常工作。

## 每种实例类类型符合 PITR 条件的数据库数量
<a name="custom-backup.pitr.sqlserver.eligiblecountperinstance"></a>

下表显示了根据实例类的类型符合 PITR 条件的最大数据库数量。


| 实例类类型 | 符合 PITR 条件的数据库的最大数量 | 
| --- | --- | 
| db.\$1.large | 100 | 
| db.\$1.xlarge 至 db.\$1.2xlarge | 150 | 
| db.\$1.4xlarge 至 db.\$1.8xlarge | 300 | 
| db.\$1.12xlarge 至 db.\$1.16xlarge | 600 | 
| db.\$1.24xlarge、db.\$132xlarge | 1000 | 

`*` *表示不同实例类类型。*

数据库实例上符合 PITR 条件的最大数据库数量取决于实例类类型。该数字的范围从最小的 100 到 RDS Custom for SQL Server 支持的最大实例类类型上的 1000 不等。此限制中并不包括 Server 系统数据库 `(master, model, msdb, tempdb)`。当数据库实例纵向扩展或缩减时，根据目标实例类类型，RDS Custom 将自动更新符合 PITR 条件的数据库数量。当数据库实例上符合 PITR 条件的最大数据库数量发生更改时，RDS Custom for SQL Server 将发送 `RDS-EVENT-0352`。有关更多信息，请参阅 [自定义引擎版本事件](USER_Events.Messages.md#USER_Events.Messages.CEV)。

**注意**  
对超过 100 个数据库的 PITR 支持仅在 2023 年 8 月 26 日之后创建的数据库实例上可用。对于 2023 年 8 月 26 日之前创建的实例，无论实例类如何，符合 PITR 条件的最大数据库数量均为 100。要在 2023 年 8 月 26 日之前创建的数据库实例上启用对超过 100 个数据库的 PITR 支持，您可以执行以下操作：  
将数据库引擎版本升级到 15.00.4322.2.v1 或更高版本

在 PITR 操作期间，RDS Custom 将在还原时在源数据库实例上还原属于 PITR 的所有数据库。目标数据库实例完成还原操作后，如果启用了备份保留，数据库实例将根据目标数据库实例上符合 PITR 条件的最大数据库数量开始备份。

例如，如果您的数据库实例在具有 200 个数据库的 `db.*.xlarge` 上运行：

1. RDS Custom for SQL Server 将选择前 150 个数据库进行 PITR 备份，按其数据库 ID 排序。

1. 您可以修改实例以纵向扩展到 db.\$1.4xlarge。

1. 扩展计算操作完成后，RDS Custom for SQL Server 将选择前 300 个数据库进行 PITR 备份，按其数据库 ID 排序。现在，满足 PITR 要求条件的 200 个数据库中的每一个都符合 PITR 条件。

1. 现在，您可以修改实例以缩减回到 db.\$1.xlarge。

1. 扩展计算操作完成后，RDS Custom for SQL Server 将再次选择前 150 个数据库进行 PITR 备份，按其数据库 ID 排序。

## 使数据库不符合 PITR 资格
<a name="custom-backup.pitr.sqlserver.ineligible"></a>

您可以选择从 PITR 中排除各个数据库。要做到这一点，请将其 `database_id` 值放入 `rds_pitr_blocked_databases` 表中。使用以下 SQL 脚本创建表。

**要创建 rds\$1pitr\$1blocked\$1databases 表**
+ 请运行以下 SQL 脚本。

  ```
  create table msdb..rds_pitr_blocked_databases
  (
  database_id INT NOT NULL,
  database_name SYSNAME NOT NULL,
  db_entry_updated_date datetime NOT NULL DEFAULT GETDATE(),
  db_entry_updated_by SYSNAME NOT NULL DEFAULT CURRENT_USER,
  PRIMARY KEY (database_id)
  );
  ```

有关符合条件和不符合条件的数据库的列表，请参阅 Amazon S3 存储桶 `do-not-delete-rds-custom-$ACCOUNT_ID-$REGION-unique_identifier` 中的 `RDSCustomForSQLServer/Instances/DB_instance_resource_ID/TransactionLogMetadata` 目录中的 `RI.End` 文件。有关 `RI.End` 文件的更多信息，请参阅[Amazon S3 中的事务日志](#custom-backup.pitr.sqlserver.tlogs)。

您还可以使用以下 SQL 脚本确定符合 PITR 条件的数据库列表。将 `@limit` 变量设置为符合该实例类的 PITR 条件的最大数据库数量。有关更多信息，请参阅 [每种实例类类型符合 PITR 条件的数据库数量](#custom-backup.pitr.sqlserver.eligiblecountperinstance)。

**在数据库实例类上确定符合 PITR 条件的数据库列表**
+ 请运行以下 SQL 脚本。

  ```
  DECLARE @Limit INT;
  SET @Limit = (insert-database-instance-limit-here);
  
  USE msdb;
  IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND  TABLE_NAME = 'rds_pitr_blocked_databases'))
      WITH TABLE0 AS (
          SELECT hdrs.database_id as DatabaseId, sdb.name as DatabaseName, 'ALWAYS_ON_NOT_WRITABLE_REPLICA' as Reason, NULL as DatabaseNameOnPitrTable
          FROM sys.dm_hadr_database_replica_states hdrs
          INNER JOIN sys.databases sdb ON sdb.database_id = hdrs.database_id
          WHERE (hdrs.is_local = 1 AND hdrs.is_primary_replica = 0) 
          OR (sys.fn_hadr_is_primary_replica (sdb.name) = 1 AND DATABASEPROPERTYEX (sdb.name, 'Updateability') = 'READ_ONLY')
      ),
      TABLE1 as (
              SELECT dbs.database_id as DatabaseId, sysdbs.name as DatabaseName, 'OPTOUT' as Reason,
              CASE WHEN dbs.database_name = sysdbs.name THEN NULL ELSE dbs.database_name END AS DatabaseNameOnPitrTable
              FROM msdb.dbo.rds_pitr_blocked_databases dbs
              INNER JOIN sys.databases sysdbs ON dbs.database_id = sysdbs.database_id
              WHERE sysdbs.database_id > 4
              ),
      TABLE2 as (
              SELECT
              db.name AS DatabaseName,
              db.create_date AS CreateDate,
              db.state_desc AS DatabaseState,
              db.database_id AS DatabaseId,
              rs.database_guid AS DatabaseGuid,
              rs.last_log_backup_lsn AS LastLogBackupLSN,
              rs.recovery_fork_guid RecoveryForkGuid,
              rs.first_recovery_fork_guid AS FirstRecoveryForkGuid,
              db.recovery_model_desc AS RecoveryModel,
              db.is_auto_close_on AS IsAutoClose,
              db.is_read_only as IsReadOnly,
              NEWID() as FileName,
              CASE WHEN(db.state_desc = 'ONLINE'
                      AND db.recovery_model_desc != 'SIMPLE' 
                      AND((db.is_auto_close_on = 0 and db.collation_name IS NOT NULL) OR db.is_auto_close_on = 1)) 
                      AND db.is_read_only != 1
                      AND db.user_access = 0
                      AND db.source_database_id IS NULL
                      AND db.is_in_standby != 1
                      THEN 1 ELSE 0 END AS IsPartOfSnapshot,
              CASE WHEN db.source_database_id IS NULL THEN 0 ELSE 1 END AS IsDatabaseSnapshot
              FROM sys.databases db
              INNER JOIN sys.database_recovery_status rs
              ON db.database_id = rs.database_id
              WHERE DB_NAME(db.database_id) NOT IN('tempdb') AND
              db.database_id NOT IN (SELECT DISTINCT DatabaseId FROM TABLE1) AND
              db.database_id NOT IN (SELECT DISTINCT DatabaseId FROM TABLE0)
          ),
          TABLE3 as(
              Select @Limit+count(DatabaseName) as TotalNumberOfDatabases from TABLE2 where TABLE2.IsPartOfSnapshot=1 and DatabaseName in ('master','model','msdb')
          )
          SELECT TOP(SELECT TotalNumberOfDatabases from TABLE3)  DatabaseName,CreateDate,DatabaseState,DatabaseId from TABLE2 where TABLE2.IsPartOfSnapshot=1
          ORDER BY TABLE2.DatabaseID ASC
  ELSE
      WITH TABLE0 AS (
          SELECT hdrs.database_id as DatabaseId, sdb.name as DatabaseName, 'ALWAYS_ON_NOT_WRITABLE_REPLICA' as Reason, NULL as DatabaseNameOnPitrTable
          FROM sys.dm_hadr_database_replica_states hdrs
          INNER JOIN sys.databases sdb ON sdb.database_id = hdrs.database_id
          WHERE (hdrs.is_local = 1 AND hdrs.is_primary_replica = 0) 
          OR (sys.fn_hadr_is_primary_replica (sdb.name) = 1 AND DATABASEPROPERTYEX (sdb.name, 'Updateability') = 'READ_ONLY')
      ),
      TABLE1 as (
              SELECT
              db.name AS DatabaseName,
              db.create_date AS CreateDate,
              db.state_desc AS DatabaseState,
              db.database_id AS DatabaseId,
              rs.database_guid AS DatabaseGuid,
              rs.last_log_backup_lsn AS LastLogBackupLSN,
              rs.recovery_fork_guid RecoveryForkGuid,
              rs.first_recovery_fork_guid AS FirstRecoveryForkGuid,
              db.recovery_model_desc AS RecoveryModel,
              db.is_auto_close_on AS IsAutoClose,
              db.is_read_only as IsReadOnly,
              NEWID() as FileName,
              CASE WHEN(db.state_desc = 'ONLINE'
                      AND db.recovery_model_desc != 'SIMPLE' 
                      AND((db.is_auto_close_on = 0 and db.collation_name IS NOT NULL) OR db.is_auto_close_on = 1)) 
                      AND db.is_read_only != 1
                      AND db.user_access = 0
                      AND db.source_database_id IS NULL
                      AND db.is_in_standby != 1
                      THEN 1 ELSE 0 END AS IsPartOfSnapshot,
              CASE WHEN db.source_database_id IS NULL THEN 0 ELSE 1 END AS IsDatabaseSnapshot
              FROM sys.databases db
              INNER JOIN sys.database_recovery_status rs
              ON db.database_id = rs.database_id
              WHERE DB_NAME(db.database_id) NOT IN('tempdb') AND
              db.database_id NOT IN (SELECT DISTINCT DatabaseId FROM TABLE0)
          ),
          TABLE2 as(
              SELECT @Limit+count(DatabaseName) as TotalNumberOfDatabases from TABLE1 where TABLE1.IsPartOfSnapshot=1 and DatabaseName in ('master','model','msdb')
          )
          select top(select TotalNumberOfDatabases from TABLE2)  DatabaseName,CreateDate,DatabaseState,DatabaseId from TABLE1 where TABLE1.IsPartOfSnapshot=1
          ORDER BY TABLE1.DatabaseID ASC
  ```

**注意**  
仅作为符号链接的数据库也被排除在符合 PITR 操作条件的数据库之外。上述查询不会根据此条件进行筛选。

## Amazon S3 中的事务日志
<a name="custom-backup.pitr.sqlserver.tlogs"></a>

备份保留期决定了 RDS Custom for SQL Server 数据库实例的事务日志是否会自动提取并上传到 Amazon S3。非零值表示创建了自动备份，且 RDS Custom 代理每 5 分钟将事务日志上传到 S3 一次。

S3 上的事务日志文件将使用您在创建数据库实例时提供的 AWS KMS key 静态加密。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[使用服务器端加密保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。

每个数据库的事务日志将被上传到名为 `do-not-delete-rds-custom-$ACCOUNT_ID-$REGION-unique_identifier` 的 S3 存储桶。S3 存储桶中的 `RDSCustomForSQLServer/Instances/DB_instance_resource_ID` 目录包含两个子目录：
+ `TransactionLogs` – 包含每个数据库的事务日志及其各自的元数据。

  事务日志文件名称遵循模式 `yyyyMMddHHmm.database_id.timestamp`，例如：

  ```
  202110202230.11.1634769287
  ```

  带有后缀 `_metadata` 的相同文件名称包含有关事务日志的信息，例如日志序列号、数据库名称和 `RdsChunkCount`。`RdsChunkCount` 确定有多少个物理文件代表单个事务日志文件。您可能会看到带有后缀 `_0001`、`_0002` 等的文件，它们表示事务日志文件的物理数据块。如果要使用分块的事务日志文件，请确保在下载后合并这些数据块。

  考虑您拥有以下文件的情况：
  + `202110202230.11.1634769287`
  + ` 202110202230.11.1634769287_0001`
  + ` 202110202230.11.1634769287_0002 `
  + ` 202110202230.11.1634769287_metadata`

  `RdsChunkCount` 为 `3`。合并文件的顺序如下：`202110202230.11.1634769287`、` 202110202230.11.1634769287_0001`、`202110202230.11.1634769287_0002`。
+ `TransactionLogMetadata` – 包含有关事务日志提取的每次迭代的元数据信息。

  `RI.End` 文件包含提取了事务日志的所有数据库的信息，以及所有存在但没有提取其事务日志的数据库的信息。`RI.End` 文件名称遵循模式 `yyyyMMddHHmm.RI.End.timestamp`，例如：

  ```
  202110202230.RI.End.1634769281
  ```

## 使用 AWS 管理控制台、AWS CLI 或 RDS API 进行 PITR 还原。
<a name="custom-backup.pitr-sqs-concli"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 将 RDS Custom for SQL Server 数据库实例还原到某个时间点。

### 控制台
<a name="custom-backup-sqs.pitr2.CON"></a>

**要将 RDS Custom 数据库实例还原至指定时间**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Automated backups**（自动备份）。

1. 选择要还原的 RDS Custom 数据库实例。

1. 对于 **Actions (操作)**，选择 **Restore to point in time (还原到时间点)**。

   此时会显示**还原到时间点**窗口。

1. 选择**最近可还原时间**以还原到可能的最近时间，或选择**自定义**来选择时间。

   如果您选择 **Custom**（自定义），请输入要将实例集群还原到的日期和时间。

   时间以您的本地时区显示，表示为协调世界时 (UTC) 的偏移量。例如，UTC-5 是东部标准时间/中部夏令时。

1. 对于 **DB instance identifier**（数据库实例标识符），请输入目标还原后的 RDS Custom 数据库实例的名称。名称必须唯一。

1. 根据需要选择其他选项，例如数据库实例类。

1. 选择**还原到时间点**。

### AWS CLI
<a name="custom-backup-sqs.pitr2.CLI"></a>

通过使用 [ restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) AWS CLI 命令创建新的 RDS Custom 数据库实例，将数据库实例还原到指定时间。

使用以下选项之一指定要从中恢复的备份：
+ `--source-db-instance-identifier mysourcedbinstance`
+ `--source-dbi-resource-id dbinstanceresourceID`
+ `--source-db-instance-automated-backups-arn backupARN`

`custom-iam-instance-profile` 选项是必需的。

截至指定的时间，以下示例会将 `my-custom-db-instance` 还原到名为 `my-restored-custom-db-instance` 的新数据库实例。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds restore-db-instance-to-point-in-time \
2.     --source-db-instance-identifier my-custom-db-instance\
3.     --target-db-instance-identifier my-restored-custom-db-instance \
4.     --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \
5.     --restore-time 2022-10-14T23:45:00.000Z
```
对于：Windows  

```
1. aws rds restore-db-instance-to-point-in-time ^
2.     --source-db-instance-identifier my-custom-db-instance ^
3.     --target-db-instance-identifier my-restored-custom-db-instance ^
4.     --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^
5.     --restore-time 2022-10-14T23:45:00.000Z
```

# 删除 RDS Custom for SQL Server 快照
<a name="custom-backup-sqlserver.deleting"></a>

如果不再需要，您可以删除 RDS Custom for SQL Server 管理的数据库快照。对于 Amazon RDS 和 RDS Custom 数据库实例而言，删除过程是相同的。

二进制卷和根卷的 Amazon EBS 快照会在您的账户中保留更长时间，因为它们可能与您账户中运行的某些实例或其他 RDS Custom for SQL Server 快照关联。当这些 EBS 快照不再与任何现有 RDS Custom for SQL Server 资源（数据库实例或备份）相关后，将会被自动删除。

## 控制台
<a name="USER_DeleteSnapshot-sqlserver.CON"></a>

**要删除 RDS Custom 数据库实例的快照**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**快照**。

1. 选择要删除的数据库快照。

1. 对于 **Actions**（操作），选择 **Delete snapshot**（删除快照）。

1. 在确认页面上选择 **Delete (删除)**。

## AWS CLI
<a name="USER_DeleteSnapshot-sqlserver.CLI"></a>

要删除 RDS Custom 快照，请使用 AWS CLI 命令 [delete-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-snapshot.html)。

以下选项为必填项：
+ `--db-snapshot-identifier` – 要删除的快照

以下示例将删除 `my-custom-snapshot` 数据库快照。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds delete-db-snapshot \  
2.   --db-snapshot-identifier my-custom-snapshot
```
对于 Windows：  

```
1. aws rds delete-db-snapshot ^
2.   --db-snapshot-identifier my-custom-snapshot
```

# 删除 RDS Custom for SQL Server 自动备份
<a name="custom-backup-sqlserver.deleting-backups"></a>

当不再需要 RDS Custom for SQL Server 的保留自动备份时，您可以删除它们。此过程与删除 Amazon RDS 备份的过程相同。

## 控制台
<a name="USER_WorkingWithAutomatedBackups-sqlserver-Deleting.CON"></a>

**删除保留的自动备份**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Automated backups**（自动备份）。

1. 选择 **Retained (保留)**。

1. 选择要删除的保留自动备份。

1. 对于 **Actions (操作)**，选择 **Delete (删除)**。

1. 在确认页面上，输入 **delete me** 并选择 **Delete (删除)**。

## AWS CLI
<a name="USER_WorkingWithAutomatedBackups-sqlserver-Deleting.CLI"></a>

可以通过使用 AWS CLI 命令 [delete-db-instance-automated-backup](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance-automated-backup.html) 删除保留的自动备份。

以下选项用于删除保留的自动备份：
+ `--dbi-resource-id` – 源 RDS Custom 数据库实例的资源标识符。

  可以通过使用 AWS CLI 命令 [describe-db-instance-automated-backups](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instance-automated-backups.html) 查找保留自动备份的源数据库实例的资源标识符。

以下示例删除具有源数据库实例资源标识符 `custom-db-123ABCEXAMPLE` 的保留自动备份。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds delete-db-instance-automated-backup \
2.     --dbi-resource-id custom-db-123ABCEXAMPLE
```
对于 Windows：  

```
1. aws rds delete-db-instance-automated-backup ^
2.     --dbi-resource-id custom-db-123ABCEXAMPLE
```

# 复制 Amazon RDS Custom for SQL Server 数据库快照
<a name="custom-copying-snapshot-sqlserver"></a>

使用 RDS Custom for SQL Server，可以复制自动备份和手动数据库快照。复制快照后，您创建的副本为手动快照。可以创建自动备份或手动快照的多个副本，但每个副本必须具有唯一的标识符。

只能在 RDS Custom for SQL Server 可用的不同 AWS 区域中复制同一 AWS 账户中的快照。目前不支持以下操作：
+ 在同一个 AWS 区域中复制数据库快照。
+ 跨 AWS 账户复制数据库快照。

RDS Custom for SQL Server 支持增量快照复制。有关更多信息，请参阅 [增量快照复制的注意事项](USER_CopySnapshot.md#USER_CopySnapshot.Incremental)。

**Topics**
+ [限制](#custom-copying-snapshot-sqlserver.Limitations)
+ [处理加密](#custom-copying-snapshot-sqlserver.Encryption)
+ [跨区域复制](#custom-copying-snapshot-sqlserver.XRCopy)
+ [使用自定义引擎版本（CEV）创建的数据库实例的快照](#custom-copying-snapshot-sqlserver.CEVSnap)
+ [为您的 IAM 主体授予所需的权限](#custom-copying-snapshot-sqlserver.GrantPermIAM)
+ [复制数据库快照](#custom-copying-snapshot-sqlserver.CopyingDBSnapshot)

## 限制
<a name="custom-copying-snapshot-sqlserver.Limitations"></a>

以下限制适用于复制 RDS Custom for SQL Server 的数据库快照：
+ 如果您在目标快照可用之前删除了源快照，则快照复制会失败。在删除源快照之前，请确保目标快照的状态为 `AVAILABLE`。
+ 不能在数据库快照复制请求中指定选项组名称或复制选项组。
+ 如果在复制过程之前或期间删除源数据库快照的任何相关 AWS 资源，则复制快照请求可能会异步失败。
  + 如果您删除源数据库实例的服务主密钥（SMK）备份文件（存储在您账户的 RDS Custom 托管式 S3 存储桶中），则数据库快照复制将异步成功。但是，依赖于 SMK 的 SQL Server 功能（例如启用 TDE 的数据库）会遇到问题。有关更多信息，请参阅 [对 RDS Custom for SQL Server 中启用 TDE 的数据库的 PENDING\$1RECOVERY 状态进行故障排除](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.pending_recovery)。
+ 目前不支持在同一 AWS 区域中复制数据库快照。
+ 目前不支持跨 AWS 账户复制数据库快照。

复制 Amazon RDS 的数据库快照的限制也适用于 RDS Custom for SQL Server。有关更多信息，请参阅 [限制](USER_CopySnapshot.md#USER_CopySnapshot.Limitations)。

## 处理加密
<a name="custom-copying-snapshot-sqlserver.Encryption"></a>

所有 RDS Custom for SQL Server 数据库实例和数据库快照都使用 KMS 密钥进行加密。只能将加密快照复制到加密快照，因此，必须为数据库快照复制请求指定在目标 AWS 区域中有效的 KMS 密钥。

源快照在复制过程中保持加密状态。Amazon RDS 使用信封加密，来在复制操作期间通过指定的目标 AWS 区域 KMS 密钥保护数据。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)。

## 跨区域复制
<a name="custom-copying-snapshot-sqlserver.XRCopy"></a>

您可以跨 AWS 区域复制数据库快照。但是，跨区域快照复制具有某些限制和注意事项。

### 授权 RDS 跨 AWS 区域通信以进行快照复制
<a name="custom-copying-snapshot-sqlserver.XRCopy.Authorize"></a>

成功处理跨区域数据库快照复制请求后，RDS 将开始复制。此时将创建供 RDS 访问源快照的授权请求。此授权请求将源数据库快照链接到目标数据库快照。这支持 RDS 仅复制到指定的目标快照。

RDS 使用服务相关的 IAM 角色中的 `rds:CrossRegionCommunication` 权限对授权进行验证。如果复制操作获得授权，则 RDS 可以与源区域通信并完成复制操作。

RDS 无权访问之前未经 CopyDBSnapshot 请求授权的数据库快照。复制完成后，将撤销授权。

RDS 使用服务链接的角色来验证源区域中的授权。如果在复制过程中删除了服务相关角色，则复制将失败。

有关更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的[使用服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)。

### 使用 AWS Security Token Service 凭证
<a name="custom-copying-snapshot-sqlserver.XRCopy.STS"></a>

来自全局 AWS Security Token Service (AWS STS) 端点的会话令牌仅在默认启用的 AWS 区域（商业区域）中有效。在 `assumeRole` 中使用来自 AWS STS API 操作的凭证时， 如果源区域是选择加入区域，请使用区域端点。否则，请求将失败。您的凭证必须在这两个区域中都有效，仅当您使用区域 AWS STS 端点时，这一点才适用于选择加入区域。

要使用全局端点，请确保在操作中为两个区域都启用了该端点。在 AWS STS 账户设置中，将全局端点设置为“在所有 AWS 区域 区域均 `Valid`”。

有关更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的[管理 AWS 区域中的 AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)。

## 使用自定义引擎版本（CEV）创建的数据库实例的快照
<a name="custom-copying-snapshot-sqlserver.CEVSnap"></a>

对于使用[自定义引擎版本（CEV）](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev-sqlserver.html)的数据库实例的数据库快照，RDS 会将 CEV 与数据库快照关联。要跨 AWS 区域复制与 CEV 关联的源数据库快照，RDS 会将 CEV 与源数据库快照一起复制到目标区域。

如果要将与同一 CEV 关联的多个数据库快照复制到同一个目标区域，则第一个复制请求会复制关联的 CEV。后续请求的复制过程会找到最初复制的 CEV，并将其与以下数据库快照副本相关联。现有 CEV 副本必须处于 `AVAILABLE` 状态，才能与数据库快照副本相关联。

要复制与 CEV 关联的数据库快照，请求者的 IAM 策略必须具有相应的权限，来授权复制数据库快照和复制关联的 CEV。请求者的 IAM 策略中需要以下权限，才能支持复制关联的 CEV：
+ `rds:CopyCustomDBEngineVersion` - 请求者 IAM 主体需要具有相应的权限，可将源 CEV 与源数据库快照一起复制到目标区域。如果请求者 IAM 主体未获得复制源 CEV 的授权，则快照复制请求将由于授权错误而失败。
+ `ec2:CreateTags` - 源 CEV 的底层 EC2 AMI 将复制到目标区域，以作为 CEV 副本的一部分。在复制 AMI 之前，RDS Custom 会尝试使用 `AWSRDSCustom` 标签来标记 AMI。确保请求者 IAM 主体有权针对源区域中源 CEV 底层的 AMI 创建标签。

有关 CEV 复制权限的信息，请参阅[为您的 IAM 主体授予所需的权限](#custom-copying-snapshot-sqlserver.GrantPermIAM)。

## 为您的 IAM 主体授予所需的权限
<a name="custom-copying-snapshot-sqlserver.GrantPermIAM"></a>

确保您有足够的访问权限来复制 RDS Custom for SQL Server 数据库快照。使用控制台或 CLI 复制数据库快照的 IAM 角色或用户（称为 IAM 主体）必须具有以下任一策略，才能成功创建数据库实例：
+ `AdministratorAccess` 策略，或者
+ 具有以下其他权限的 `AmazonRDSFullAccess` 策略：

  ```
  s3:CreateBucket
  s3:GetBucketPolicy
  s3:PutBucketPolicy
  kms:CreateGrant
  kms:DescribeKey
  ec2:CreateTags
  ```

RDS Custom 在跨 AWS 区域复制快照期间使用这些权限。这些权限在您的账户中配置执行 RDS Custom 操作所需的资源。有关 `kms:CreateGrant` 权限的更多信息，请参阅 [AWS KMS key 管理](Overview.Encryption.Keys.md)。

除 `AmazonRDSFullAccess` 策略外，以下 JSON 策略示例还授予所需的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateS3BucketAndReadWriteBucketPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutBucketPolicy",
                "s3:GetBucketPolicy"
            ],
            "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*"
        },
        {
            "Sid": "CreateKmsGrant",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CreateEc2Tags",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**注意**  
确保列出的权限不受服务控制策略（SCP）、权限边界或与 IAM 主体关联的会话策略的限制。

如果您在请求者的 IAM 策略中使用带有上下文密钥的条件，则某些条件可能会导致请求失败。有关由于 IAM 策略条件而导致的常见陷阱的更多信息，请参阅[请求跨区域数据库快照复制](USER_CopySnapshot.md#USER_CopySnapshot.AcrossRegions.Policy)。

## 复制数据库快照
<a name="custom-copying-snapshot-sqlserver.CopyingDBSnapshot"></a>

使用以下过程复制数据库快照。对于每个 AWS 账户，一次最多可以从一个 AWS 区域向另一个区域复制 20 个数据库快照。如果您将数据库快照复制到另一个 AWS 区域，则可创建保留在该 AWS 区域中的手动数据库快照。从源 AWS 区域复制出数据库快照会产生 Amazon RDS 数据传输费用。有关数据传输定价的更多信息，请参阅 [Amazon RDS 定价](https://aws.amazon.com/rds/pricing/)。

在新 AWS 区域中创建数据库快照副本后，该数据库快照副本的行为与该 AWS 区域中所有其他数据库快照的行为相同。

可以使用 AWS 管理控制台、AWS CLI 或 Amazon RDS API 来复制数据库快照。

------
#### [ Console ]

以下过程使用 AWS 管理控制台复制 RDS Custom for SQL Server 数据库快照。

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**快照**。

1. 选择要复制的 RDS Custom for SQL Server 数据库快照。

1. 在**操作**下拉列表中，选择**复制快照**。  
![\[Amazon RDS 控制台中的复制快照页面。设置已加载到页面中。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/XRSC-Snapshot-Copy.png)

1. 要将数据库快照复制到其他 AWS 区域，请将**目标区域**设置为所需的值。
**注意**  
目标 AWS 区域必须具有与源 AWS 区域相同的可用数据库引擎版本。

1. 对于**新数据库快照标识符**，输入数据库快照的唯一名称。可以创建自动备份或手动快照的多个副本，但每个副本必须具有唯一的标识符。

1. (可选) 选择 **Copy Tags (复制标签)** 将标签和值从快照复制到快照的副本。

1. 对于**加密**，指定用于加密数据库快照副本的 KMS 密钥标识符。
**注意**  
RDS Custom for SQL Server 对所有数据库快照进行加密。您无法创建不加密的数据库快照。

1. 选择**复制快照**。

RDS Custom for SQL Server 在您选择的 AWS 区域中创建数据库实例的数据库快照副本。

------
#### [ AWS CLI ]

可以使用 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-snapshot.html) 复制 RDS Custom for SQL Server 数据库快照。如果您将快照复制到新 AWS 区域，请在新 AWS 区域中运行命令。以下选项用于复制数据库快照。并非所有情况下都需要所有选项。
+ `--source-db-snapshot-identifier` – 源数据库快照的标识符。
  + 如果源快照与副本位于不同 AWS 区域，则指定有效的数据库快照 ARN。例如 `arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678`。
+ `--target-db-snapshot-identifier` – 数据库快照的新副本的标识符。
+ `--kms-key-id` – 加密的数据库快照的 KMS 密钥标识符。KMS 密钥标识符是 Amazon Resource Name (ARN)、密钥标识符或 KMS 密钥的别名。
  + 如果将加密快照复制到不同 AWS 区域，必须为目标 AWS 区域指定 KMS 密钥。KMS 密钥特定于在其中创建它们的 AWS 区域，您无法将一个 AWS 区域中的加密密钥用于另一个 AWS 区域，除非使用多区域密钥。有关多区域 KMS 密钥的更多信息，请参阅[在 AWS KMS 中使用多区域密钥](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)。
+ `--copy-tags` – 将源快照中的标签和值包含到快照的副本中。

不支持使用以下选项来复制 RDS Custom for SQL Server 数据库快照：
+ `--copy-option-group `
+ `--option-group-name`
+ `--pre-signed-url`
+ `--target-custom-availability-zone`

以下代码示例将加密的数据库快照从美国西部（俄勒冈州）区域复制到美国东部（弗吉尼亚州北部）。在目标 (us-east-1) 区域运行该命令。

对于 Linux、macOS 或 Unix：

```
aws rds copy-db-snapshot \
     --region us-east-1 \
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678 \
    --target-db-snapshot-identifier mydbsnapshotcopy \
    --kms-key-id a1b2c3d4-1234-5678-wxyz-a1b2c3d4d5e6
```

对于 Windows：

```
aws rds copy-db-snapshot ^
     --region us-east-1 ^
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678 ^
    --target-db-snapshot-identifier mydbsnapshotcopy ^
    --kms-key-id a1b2c3d4-1234-5678-wxyz-a1b2c3d4d5e6
```

------
#### [ RDS API ]

可以使用 Amazon RDS API 操作 [CopyDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBSnapshot.html) 复制 RDS Custom for SQL Server 数据库快照。如果您将快照复制到新 AWS 区域，请在新 AWS 区域中执行操作。以下参数用于复制数据库快照。并非所有参数都是必需的。
+ `SourceDBSnapshotIdentifier` – 源数据库快照的标识符。
  + 如果源快照与副本位于不同 AWS 区域，则指定有效的数据库快照 ARN。例如 `arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678`。
+ `TargetDBSnapshotIdentifier` – 数据库快照的新副本的标识符。
+ `KmsKeyId` – 加密的数据库快照的 KMS 密钥标识符。KMS 密钥标识符是 Amazon Resource Name (ARN)、密钥标识符或 KMS 密钥的别名。
  + 如果将加密快照复制到不同 AWS 区域，必须为目标 AWS 区域指定 KMS 密钥。KMS 密钥特定于在其中创建它们的 AWS 区域，您无法将一个 AWS 区域中的加密密钥用于另一个 AWS 区域，除非使用多区域密钥。有关多区域 KMS 密钥的更多信息，请参阅[在 AWS KMS 中使用多区域密钥](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)。
+ `CopyTags` – 将此参数设置为 `true`，来将标签和值从源快照复制到快照的副本。默认值为 `false`。

不支持使用以下选项来复制 RDS Custom for SQL Server 数据库快照：
+ `CopyOptionGroup`
+ `OptionGroupName`
+ `PreSignedUrl`
+ `TargetCustomAvailabilityZone`

以下代码使用新名称 `mydbsnapshotcopy`，在 US East (N. Virginia) 区域中创建快照的副本。

```
https://rds.us-east-1.amazonaws.com/
    ?Action=CopyDBSnapshot
    &KmsKeyId=a1b2c3d4-1234-5678-wxyz-a1b2c3d4d5e6
    &SourceDBSnapshotIdentifier=arn%3Aaws%3Ards%3Aus-west-2%3A123456789012%3Asnapshot%3Ainstance1-snapshot-12345678
    &TargetDBSnapshotIdentifier=mydbsnapshotcopy
    &Version=2014-10-31
    &X-Amz-Algorithm=AWS4-HMAC-SHA256
    &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request
    &X-Amz-Date=20161117T221704Z
    &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
    &X-Amz-Signature=da4f2da66739d2e722c85fcfd225dc27bba7e2b8dbea8d8612434378e52adccf
```

------

# 将本地数据库迁移到 Amazon RDS Custom for SQL Server
<a name="custom-migrating"></a>

您可以使用以下过程通过本机备份和还原将本地 Microsoft SQL Server 数据库迁移到 Amazon RDS Custom for SQL Server。

1. 在本地数据库实例上对数据库进行完整备份。

1. 将备份文件上载到 Amazon S3。

1. 将备份文件从 S3 下载到 RDS Custom for SQL Server 数据库实例。

1. 使用 RDS Custom for SQL Server 数据库实例上已下载的备份文件还原数据库。

此过程解释了使用本机完全备份和还原将数据库从本地迁移到 RDS Custom for SQL Server 的情况。为了缩短迁移过程中的割接时间，您也可以考虑使用差异备份或日志备份。

有关 RDS for SQL Server 的本机备份和还原的一般信息，请参阅[使用本机备份和还原导入和导出 SQL Server 数据库](SQLServer.Procedural.Importing.md)。

**Topics**
+ [先决条件](#custom-migrating.prereqs)
+ [备份本地数据库](#custom-migrating.backup)
+ [将备份文件上载到 Amazon S3](#custom-migrating.upload)
+ [从 Amazon S3 下载备份文件](#custom-migrating.upload)
+ [将备份文件还原到 RDS Custom for SQL Server 数据库实例](#custom-migrating.restore)

## 先决条件
<a name="custom-migrating.prereqs"></a>

在迁移数据库之前，请执行以下任务：

1. 为 RDS Custom for SQL Server 数据库实例配置远程桌面连接 (RDP)。有关更多信息，请参阅 [使用 RDP 连接到 RDS Custom 数据库实例](custom-creating-sqlserver.rdp.md)。

1. 配置对 Amazon S3 的访问权限，以便您可以上载和下载数据库备份文件。

## 备份本地数据库
<a name="custom-migrating.backup"></a>

您可以使用 SQL Server 本机备份在本地数据库实例上对数据库进行完整备份。

以下示例显示了称为 `mydatabase` 的数据库备份，以及指定用于减小备份文件大小的 `COMPRESSION` 选项。

**要备份本地数据库**

1. 使用 SQL Server Management Studio (SSMS)，连接到本地 SQL Server 实例。

1. 运行以下 T-SQL 命令。

   ```
   backup database mydatabase to
   disk ='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\mydb-full-compressed.bak'
   with compression;
   ```

## 将备份文件上载到 Amazon S3
<a name="custom-migrating.upload"></a>

您可以使用 AWS 管理控制台 将备份文件 `mydb-full-compressed.bak` 上载到 Amazon S3。

**要将备份文件上载到 S3**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 对于 **Buckets**（存储桶），选择要将备份文件上载到的存储桶的名称。

1. 请选择 **Upload**（上传）。

1. 在**上传**窗口中，执行下列操作之一：
   + 将 `mydb-full-compressed.bak` 拖放到 **Upload**（上载）窗口。
   + 选择 **Add file**（添加文件），选择 `mydb-full-compressed.bak`，然后选择 **Open**（打开）。

   Amazon S3 将备份文件上载为 S3 对象。上传完成后，您可以在**上传：状态**页面上看到成功消息。

## 从 Amazon S3 下载备份文件
<a name="custom-migrating.upload"></a>

您可以使用控制台将备份文件从 S3 下载到 RDS Custom for SQL Server 数据库实例。

**要从 S3 下载备份文件**

1. 使用 RDP 连接到 RDS Custom for SQL Server 数据库实例。

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在 **Buckets**（存储桶）列表中，选择包含备份文件的存储桶的名称。

1. 选择备份文件 `mydb-full-compressed.bak`。

1. 对于 **Actions**（操作），选择 **Download as**（下载为）。

1. 打开提供的链接的上下文（右键单击）菜单，然后选择 **Save As**（另存为）。

1. 将 `mydb-full-compressed.bak` 保存到 `D:\rdsdbdata\BACKUP` 目录。

## 将备份文件还原到 RDS Custom for SQL Server 数据库实例
<a name="custom-migrating.restore"></a>

您可以使用 SQL Server 本机还原将备份文件还原到 RDS Custom for SQL Server 数据库实例。

在此示例中，因为数据和日志文件目录与本地数据库实例不同，将指定 `MOVE` 选项。

**要恢复备份文件**

1. 使用 SSMS，连接到 RDS Custom for SQL Server 数据库实例。

1. 运行以下 T-SQL 命令。

   ```
   restore database mydatabase from disk='D:\rdsdbdata\BACKUP\mydb-full-compressed.bak'
   with move 'mydatabase' to 'D:\rdsdbdata\DATA\mydatabase.mdf',
   move 'mydatabase_log' to 'D:\rdsdbdata\DATA\mydatabase_log.ldf';
   ```

# RDS Custom for SQL Server 操作系统更新
<a name="custom-os-upgrade"></a>

RDS Custom for SQL Server 提供以下方法来将操作系统更新应用于 RDS 提供的引擎版本（RPEV）实例：
+ *系统更新维护操作*
+ *数据库次要版本升级*
  + 使用 RPEV 升级数据库次要引擎版本包括最新的操作系统更新。如果要将操作系统更新与 SQL Server 次要版本升级相结合，则此方法特别有用。有关更多信息，请参阅 [升级 Amazon RDS Custom for SQL Server 数据库实例](custom-upgrading-sqlserver.md)。

## 操作系统更新的场景
<a name="custom-os-upgrade.Scenarios"></a>

有两种方法可以管理 RDS Custom for SQL Server 实例的操作系统更新：
+ 对于单可用区实例，实例在操作系统更新期间不可用。
+ 对于多可用区部署，RDS 通过以下方式应用操作系统更新：
  + 首先，RDS 对备用实例执行操作系统更新。
  + RDS 失效转移到升级后的备用数据库实例，使其成为新的主数据库实例。
  + 最后，RDS 对新的备用数据库实例执行操作系统更新。

多可用区部署的停机时间是失效转移所花费的时间。

## 使用系统更新维护操作应用操作系统更新
<a name="custom-os-upgrade.SystemUpdates"></a>

要将操作系统更新应用于 Amazon RDS RPEV 实例，可以使用 AWS 管理控制台、AWS CLI 或 RDS API。有关更多信息，请参阅 [为 RDS 数据库实例更新操作系统](USER_UpgradeDBInstance.Maintenance.md#OS_Updates)。

**Example**  
对于 Linux、macOS 或 Unix：  
**步骤 1：检查是否有可用更新**  
使用 `describe-pending-maintenance-actions` 命令来查看您的实例是否有操作系统更新可用：  

```
aws rds describe-pending-maintenance-actions
```
响应示例：  

```
{
    "PendingMaintenanceActions": [
        {
            "ResourceIdentifier": "arn:aws:rds:us-east-1:111122223333:db:my-sqlserver-instance",
            "PendingMaintenanceActionDetails": [
                {
                    "Action": "system-update",
                    "Description": "New Operating System update is available"
                }
            ]
        }
    ]
}
```
操作类型为 `system-update` 表示操作系统更新可用于您的实例。  
**步骤 2：应用操作系统更新**  
使用 `apply-pending-maintenance-action` 命令安排更新：  

```
aws rds apply-pending-maintenance-action \ 
                --resource-identifier arn:aws:rds:us-east-1:111122223333:db:my-sqlserver-instance \ 
                --apply-action system-update \ 
                --opt-in-type immediate
```
`opt-in-type` 输入具有以下选项：  
+ `immediate`：立即应用更新
+ `next-maintenance`：在下一个安排的维护时段内应用更新
+ `undo-opt-in`：取消之前安排的更新
响应示例：  

```
{
    "ResourcePendingMaintenanceActions": {
        "ResourceIdentifier": "arn:aws:rds:us-east-1:111122223333:db:my-sqlserver-instance",
        "PendingMaintenanceActionDetails": [
            {
                "Action": "system-update",
                "AutoAppliedAfterDate": "2024-04-10T20:41:01.695000+00:00",
                "ForcedApplyDate": "2024-04-10T20:41:01.694000+00:00",
                "CurrentApplyDate": "2024-04-10T20:41:01.695000+00:00",
                "Description": "New Operating System update is available"
            }
        ]
    }
}
```

## 操作系统更新通知
<a name="custom-os-upgrade.OSNotifications"></a>

要在新的可选操作系统补丁变为可用时收到通知，您可以订阅安全修补事件类别中的 [RDS-EVENT-0230](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Messages.html#RDS-EVENT-0230)。有关订阅 RDS 事件的信息，请参阅[订阅 Amazon RDS 事件通知](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Subscribing.html)。

## 注意事项
<a name="custom-os-upgrade.Considerations"></a>

以下注意事项和限制适用于操作系统更新：
+ 在操作系统更新期间，不保留对 C:\$1 驱动器所做的任何操作系统自定义。
+ 我们建议在应用更新之前拍摄手动快照。

# 升级 Amazon RDS Custom for SQL Server 数据库实例
<a name="custom-upgrading-sqlserver"></a>

您可以通过修改 Amazon RDS Custom for SQL Server 数据库实例，以使其使用新的数据库引擎版本来升级该实例。有关升级数据库实例的一般信息，请参阅[升级数据库实例 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。

**Topics**
+ [RDS Custom for SQL Server 升级概述](#custom-upgrading-sqlserver.Overview)
+ [升级主要和次要引擎版本](#custom-upgrading-sqlserver.Upgrade)
+ [数据库兼容性级别](#custom-upgrading-sqlserver.Major.Compatibility)

## RDS Custom for SQL Server 升级概述
<a name="custom-upgrading-sqlserver.Overview"></a>

Amazon RDS Custom for SQL Server 支持主要版本和次要版本升级。次要版本升级可能包括安全补丁、错误修复和引擎改进。Microsoft 以累积更新（CU）形式发布这些更新。主要版本升级在版本之间引入了新功能和引擎更改，例如从 SQL Server 2019 升级到 2022。您可以立即或在计划的维护时段内应用这两种升级。为防止出现潜在的向后兼容性问题，建议在升级之前，先在非生产环境中测试应用程序。

RDS Custom for SQL Server 可让您升级 RDS 提供的引擎版本（RPEV）或自定义引擎版本（CEV）。
+ RDS 提供的引擎版本（RPEV）包含最新的操作系统（OS）补丁和 SQL Server 累积更新（CU）。
+ 对于自定义引擎版本（CEV），您必须遵循由两个步骤组成的过程。首先，使用目标 SQL Server 版本创建新的 CEV，请参阅[正在准备创建适用于 RDS Custom for SQL Server 的 CEV](custom-cev-sqlserver.preparing.md)。此目标版本必须等于或高于您的当前版本。创建新的 CEV 后，修改数据库实例以使用此新版本。有关更多信息，请参阅 [Performing a minor version upgrade for Amazon RDS Custom for SQL Server CEV with Multi-AZ](https://aws.amazon.com/blogs/database/performing-a-minor-version-upgrade-for-amazon-rds-custom-for-sql-server-cev-with-multi-az/)。

  请勿将 SQL Server 累积更新就地应用于正在运行的 RDS Custom 实例。使用特定 SQL Server 版本（例如 SQL Server 2022 CU16）创建 CEV 后，直接向实例应用较新的累积更新会使实例脱离支持外围并报告错误 `SP-S3006`。要使用 CEV 修补现有 SQL Server 实例，请创建一个包含所需累积更新的新 CEV，然后修改现有实例以切换到新的 CEV。

如果您在多可用区部署中升级 RDS Custom for SQL Server 数据库实例，则 RDS Custom for SQL Server 会对实例执行滚动升级。这种方法通过一次升级一个实例来最大限度地减少停机时间。RDS 执行以下操作来执行滚动升级：

1. 升级备用数据库实例。

1. 失效转移到升级后的备用数据库实例，使其成为新的主数据库实例。

1. 升级新的备用数据库实例。

多可用区部署的数据库实例停机时间是失效转移所花费的时间。

升级 RDS Custom for SQL Server 数据库实例时，以下限制适用：
+ 不支持自定义数据库选项和参数组。
+ 升级后，将不会连接到您连接到 RDS Custom for SQL Server 数据库实例的任何其它存储卷。
+ 对于 CEV，不支持就地应用 SQL Server 累积更新，否则会导致实例被移出支持外围。

## 升级主要和次要引擎版本
<a name="custom-upgrading-sqlserver.Upgrade"></a>

主要和次要引擎版本升级都是不可逆转的，必须始终升级到较新的版本。要确定可用的目标版本，请在修改数据库实例时使用 AWS 管理控制台并从可用版本中进行选择。或者，使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) CLI 命令或 [DescribeDBEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBEngineVersions.html) RDS API 命令。

对于 Linux、macOS 或 Unix：

```
aws rds describe-db-engine-versions \
    --engine custom-sqlserver-se \
    --engine-version 15.00.4322.2.v1 \
    --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" \
    --output table
```

对于 Windows：

```
aws rds describe-db-engine-versions ^
    --engine custom-sqlserver-se ^
    --engine-version 15.00.4322.2.v1 ^
    --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^
    --output table
```

输出显示可用的目标引擎版本：

```
--------------------------
|DescribeDBEngineVersions|
+------------------------+
|      EngineVersion     |
+------------------------+
|  15.00.4410.1.v1       |
|  15.00.4415.2.v1       |
|  15.00.4430.1.v1       |
|  16.00.4165.4.v1       |
|  16.00.4175.1.v1       |
|  16.00.4185.3.v1       |
+------------------------+
```

确定目标版本后，使用 AWS 管理控制台并按照[修改 RDS Custom for SQL Server 数据库实例](custom-managing.modify-sqlserver.md)中的说明操作。或者，也可以使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 命令或 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 命令。

对于 Linux、macOS 或 Unix：

```
aws rds modify-db-instance \
    --db-instance-identifier DB_INSTANCE_IDENTIFIER \
    --engine-version ENGINE_VERSION \
    --allow-major-version-upgrade \
    --region Region \
    --no-apply-immediately
```

对于 Windows：

```
aws rds modify-db-instance ^
    --db-instance-identifier DB_INSTANCE_IDENTIFIER ^
    --engine-version ENGINE_VERSION ^
    --allow-major-version-upgrade ^
    --region Region ^
    --no-apply-immediately
```

**注意**  
必须包含 `--allow-major-version-upgrade` 参数才能执行主要版本升级。

## 数据库兼容性级别
<a name="custom-upgrading-sqlserver.Major.Compatibility"></a>

您可以使用 Microsoft SQL Server 数据库兼容性级别调整某些数据库行为，以模仿之前版本的 SQL Server。有关更多信息，请参阅 Microsoft 文档中的[兼容性级别](https://msdn.microsoft.com/en-us/library/bb510680.aspx)。

在升级数据库实例时，任何现有的数据库将保持其原始兼容性级别。例如，如果从 SQL Server 2019 升级到 SQL Server 2022，所有现有数据库的兼容性级别均为 150。在升级后创建的所有新数据库的兼容性级别均为 160。

您可以使用 ALTER DATABASE 命令更改数据库的兼容性级别。例如，要将名为 `customeracct` 的数据库更改为与 SQL Server 2022 兼容，请发出以下命令：

```
1. ALTER DATABASE customeracct SET COMPATIBILITY_LEVEL = 160
```

# 针对 Amazon RDS Custom for SQL Server 排查数据库的问题
<a name="custom-troubleshooting-sqlserver"></a>

RDS Custom 的责任共担模型提供了操作系统外壳级别的访问权限和数据库管理员访问权限。RDS Custom 会在您的账户中运行资源，与 Amazon RDS 不同，因为后者会在系统账户中运行资源。访问权限更多，责任也更大。在下面的各个部分，您可以了解如何排查 Amazon RDS Custom for SQL Server 数据库实例的问题。

**注意**  
本节介绍如何排查 RDS Custom for SQL Server 的问题。有关排查 RDS Custom for Oracle 的问题，请参阅[针对 Amazon RDS Custom for Oracle 排查数据库问题](custom-troubleshooting.md)。

**Topics**
+ [查看 RDS Custom 事件](#custom-troubleshooting-sqlserver.support-perimeter.viewing-events)
+ [订阅 RDS Custom 事件](#custom-troubleshooting-sqlserver.support-perimeter.subscribing)
+ [RDS Custom for SQL Server 的 CEV 错误故障排除](#custom-troubleshooting-sqlserver.cev)
+ [修复 RDS Custom for SQL Server 中不支持的配置](#custom-troubleshooting-sqlserver.fix-unsupported)
+ [在 RDS Custom for SQL Server 中排查 `Storage-Full` 问题](#custom-troubleshooting-storage-full)
+ [对 RDS Custom for SQL Server 中启用 TDE 的数据库的 PENDING\$1RECOVERY 状态进行故障排除](#custom-troubleshooting-sqlserver.pending_recovery)

## 查看 RDS Custom 事件
<a name="custom-troubleshooting-sqlserver.support-perimeter.viewing-events"></a>

对于 RDS Custom 和 Amazon RDS 数据库实例而言，查看事件的流程是相同的。有关更多信息，请参阅 [查看 Amazon RDS 事件](USER_ListEvents.md)。

要使用 AWS CLI 查看 RDS Custom 事件通知，请使用 `describe-events` 命令。RDS Custom 推出了几项新事件。事件类别与 Amazon RDS 的事件类别相同。有关事件列表，请参阅 [Amazon RDS 事件类别和事件消息](USER_Events.Messages.md)。

以下示例检索指定 RDS Custom 数据库实例发生的事件的详细信息。

```
1. aws rds describe-events \
2.     --source-identifier my-custom-instance \
3.     --source-type db-instance
```

## 订阅 RDS Custom 事件
<a name="custom-troubleshooting-sqlserver.support-perimeter.subscribing"></a>

对于 RDS Custom 和 Amazon RDS 数据库实例而言，订阅事件的流程是相同的。有关更多信息，请参阅 [订阅 Amazon RDS 事件通知](USER_Events.Subscribing.md)。

要使用 CLI 订阅 RDS Custom 事件通知，请使用 `create-event-subscription` 命令。包括以下必需参数：
+ `--subscription-name`
+ `--sns-topic-arn`

以下示例为当前的 AWS 账户中的 RDS Custom 数据库实例创建了备份和恢复事件的订阅。您也可以将通知发送到 `--sns-topic-arn` 指定的 Amazon Simple Notification Service (Amazon SNS) 主题。

```
1. aws rds create-event-subscription \
2.     --subscription-name my-instance-events \
3.     --source-type db-instance \
4.     --event-categories '["backup","recovery"]' \
5.     --sns-topic-arn arn:aws:sns:us-east-1:123456789012:interesting-events
```

## RDS Custom for SQL Server 的 CEV 错误故障排除
<a name="custom-troubleshooting-sqlserver.cev"></a>

当您尝试创建 CEV 时，可能会失败。在这种情况下，RDS Custom 会发出 `RDS-EVENT-0198` 事件消息。有关查看 RDS 事件的更多信息，请参阅 [Amazon RDS 事件类别和事件消息](USER_Events.Messages.md)。

以下信息可帮助您解决可能的原因。


****  

| 消息 | 故障排除建议 | 
| --- | --- | 
| `Custom Engine Version creation expected a Sysprep’d AMI. Retry creation using a Sysprep’d AMI.` | 在您从 AMI 创建的 EC2 实例上运行 Sysprep。有关使用 Sysprep 准备 AMI 的更多信息，请参阅[使用 Sysprep 创建标准化的 Amazon 机器映像（AMI）](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html#sysprep-using-ec2launchv2)。 | 
| `EC2 Image permissions for image (AMI_ID) weren't found for customer (Customer_ID). Verify customer (Customer_ID) has valid permissions on the EC2 Image.` | 验证您用于创建的账户和配置文件对所选 AMI 的 `create EC2 Instance` 和 `Describe Images` 具有所需的权限。 | 
| `Failed to rebuild databases with server collation (collation name) due to missing setup.exe file for SQL Server.` | 确认 `setup` 文件在 `C:\Program Files\Microsoft SQL Server\nnn\Setup Bootstrap\SQLnnnn\setup.exe` 中可用。 | 
| `Image (AMI_ID) doesn't exist in your account (ACCOUNT_ID). Verify (ACCOUNT_ID) is the owner of the EC2 image.` | 确保 AMI 存在于同一个客户账户中。 | 
| `Image id (AMI_ID) isn't valid. Specify a valid image id, and try again.` | AMI 的名称不正确。确保提供正确的 AMI ID。 | 
| `Image (AMI_ID) operating system platform isn't supported. Specify a valid image, and try again.` |  选择支持的 AMI，该 AMI 具有 Windows Server 以及 SQL Server Enterprise、Standard 或 Web 版。从 EC2 Marketplace 选择具有以下使用情况操作代码之一的 AMI： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting-sqlserver.html)  | 
| `SQL Server Web Edition isn't supported for creating a Custom Engine Version using Bring Your Own Media. Specify a valid image, and try again.` | 使用包含支持的 SQL Server 版本的 AMI。有关更多信息，请参阅 [RDS Custom for SQL Server CEV 的版本支持](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.VersionSupport)。 | 
| `The custom engine version can't be the same as the OEV engine version. Specify a valid CEV, and try again.` | 不支持经典 RDS Custom for SQL Server 引擎版本。例如，版本 **15.00.4073.23.v1**。使用支持的版本号。 | 
| `The custom engine version isn't in an active state. Specify a valid CEV, and try again.` | CEV 必须处于 `AVAILABLE` 状态才能完成操作。将 CEV 从 `INACTIVE` 修改为 `AVAILABLE`。 | 
| `The custom engine version isn't valid for an upgrade. Specify a valid CEV with an engine version greater or equal to (X), and try again.` | 目标 CEV 无效。检查对有效升级路径的要求。 | 
| `The custom engine version isn't valid. Names can include only lowercase letters (a-z), dashes (-), underscores (_), and periods (.). Specify a valid CEV, and try again.` | 遵循所需的 CEV 命名约定。有关更多信息，请参阅 [RDS Custom for SQL Server CEV 的要求](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.Requirements)。 | 
| `The custom engine version isn't valid. Specify valid database engine version, and try again. Example: 15.00.4073.23-cev123.` | 提供了不支持的数据库引擎版本。使用支持的数据库引擎版本。 | 
| `The expected architecture is (X) for image (AMI_ID), but architecture (Y) was found.` | 使用基于 **x86\$164** 架构构建的 AMI。 | 
| `The expected owner of image (AMI_ID) is customer account ID (ACCOUNT_ID), but owner (ACCOUNT_ID) was found.` | 从您拥有权限的 AMI 创建 EC2 实例。在 EC2 实例上运行 Sysprep 以创建和保存基本映像。 | 
| `The expected platform is (X) for image (AMI_ID), but platform (Y) was found.` | 使用在 Windows 平台上构建的 AMI。 | 
| `The expected root device type is (X) for image %s, but root device type (Y) was found.` | 使用 EBS 设备类型创建 AMI。 | 
| `The expected SQL Server edition is (X), but (Y) was found.` |  选择支持的 AMI，该 AMI 具有 Windows Server 以及 SQL Server Enterprise、Standard 或 Web 版。从 EC2 Marketplace 选择具有以下使用情况操作代码之一的 AMI： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting-sqlserver.html)  | 
| `The expected state is (X) for image (AMI_ID), but the following state was found: (Y).` | 确保 AMI 的状态为 `AVAILABLE`。 | 
| `The provided Windows OS name (X) isn’t valid. Make sure the OS is one of the following: (Y).` | 使用支持的 Windows 操作系统。 | 
| `Unable to find bootstrap log file in path.` | 确认日志文件在 `C:\Program Files\Microsoft SQL Server\nnn\Setup Bootstrap\Log\Summary.txt` 中可用。 | 
| `RDS expected a Windows build version greater than or equal to (X), but found version (Y).`. | 使用操作系统编译版本最低为 **14393** 的 AMI。 | 
| `RDS expected a Windows major version greater than or equal to (X), but found version (Y).`. | 使用最低操作系统主版本为 **10.0** 或更高版本的 AMI。 | 

## 修复 RDS Custom for SQL Server 中不支持的配置
<a name="custom-troubleshooting-sqlserver.fix-unsupported"></a>

由于责任共担模式，您应负责修复导致 RDS Custom for SQL Server 数据库实例进入 `unsupported-configuration` 状态的配置问题。如果问题与 AWS 基础设施有关，则您可以使用控制台或 AWS CLI 修复该问题。如果问题与操作系统或数据库配置有关，则您可以登录到主机进行修复。

**注意**  
本节介绍如何修复 RDS Custom for SQL Server 中不支持的配置。有关 RDS Custom for Oracle 的信息，请参阅[修复 RDS Custom for Oracle 中不支持的配置](custom-troubleshooting.md#custom-troubleshooting.fix-unsupported)。

在下表中，您可以找到支持外围所发送的通知和事件以及如何修复这些问题的说明。这些通知和支持外围可能会更改。有关支持外围的背景，请参阅[RDS Custom 支持外围](custom-concept.md#custom-troubleshooting.support-perimeter)。有关事件描述，请参阅[Amazon RDS 事件类别和事件消息](USER_Events.Messages.md)。


| 事件代码 | 配置区域 | RDS 事件消息 | 验证过程 | 
| --- | --- | --- | --- | 
|  `SP-S0000`  |  手动不支持的配置  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：`X`。  |  要解决此问题，请创建支持案例。  | 

**AWS 资源（基础设施）**


| 事件代码 | 配置区域 | RDS 事件消息 | 验证过程 | 
| --- | --- | --- | --- | 
|  `SP-S1001`  |  EC2 实例状态  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：底层 EC2 实例 %s 已停止，但未停止 RDS 实例。您可以通过启动底层 EC2 实例并确保已附加二进制和数据卷来解决此问题。如果您打算停止 RDS 实例，请先确保底层 EC2 实例处于可用状态，然后使用 RDS 控制台或 CLI 停止 RDS 实例。  |  要检查数据库实例的状态，请使用控制台或运行以下 AWS CLI 命令： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep DBInstanceStatus<br />                            </pre>  | 
|  `SP-S1002`  |  EC2 实例状态  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：RDS 数据库实例状态设置为 `STOPPED`，但底层 EC2 实例 %s 已启动。可以通过停止底层 EC2 实例来解决此问题。如果您打算启动 RDS 实例，请使用控制台或 CLI。  |   使用 AWS CLI 命令检查数据库实例的状态： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep DBInstanceStatus</pre> 您还可以使用 EC2 控制台检查 EC2 实例的状态。 要启动数据库实例，请使用控制台或运行以下 AWS CLI 命令： <pre>aws rds start-db-instance \<br />    --db-instance-identifier db-instance-name</pre>  | 
|  `SP-S1003`   |  EC2 实例类  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：EC2 主机的预期和已配置数据库实例类别不匹配。可以通过将数据库实例类修改为其原始类的类型来解决此问题。  |   使用以下 CLI 命令可检查预期的数据库实例类： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep DBInstanceClass</pre>  | 
|  `SP-S1004`  |  无法访问 EBS 存储卷  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：与 EC2 实例关联的原始 EBS 存储卷 %s 目前无法访问。  |    | 
|  `SP-S1005`  |  EBS 存储卷已分离  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：未连接原始 EBS 存储卷“volume-id”。您可以通过附加与 EC2 实例关联的 EBS 卷来解决此问题。  |   重新附加 EBS 卷后，使用以下 CLI 命令检查 EBS 卷“volume-id”是否已正确附加到 RDS 实例： <pre>aws ec2 describe-volumes \<br />    --volume-ids volume-id |grep InstanceId</pre>  | 
|  `SP-S1006`  |  EBS 存储卷大小  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：EBS 存储卷“volume-id”的预期设置和已配置设置不匹配。卷大小已在 EC2 级别从其原始值 [%s] 手动更改。要解决此问题，请创建支持案例。  |   使用以下 CLI 命令比较 EBS 卷“volume-id”详细信息和 RDS 实例详细信息的卷大小： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep AllocatedStorage</pre>  使用以下 CLI 命令查看实际分配的卷大小： <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Size</pre>  | 
|  `SP-S1007`  |  EBS 存储卷配置  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：EBS 存储卷“volume-id”的预期设置和已配置设置不匹配。您可以通过在 EC2 级别将 EBS 存储卷配置 [IOPS、吞吐量、卷类型] 修改为其原始值 [IOPS：%s，吞吐量：%s，卷类型：%s] 来解决此问题。如果将来需要修改存储，请使用 RDS 控制台或 CLI。卷大小也已在 EC2 级别从其原始值 [%s] 手动更改。要解决此问题，请创建支持案例。  |   使用以下 CLI 命令比较 EBS 卷“volume-id”详细信息和 RDS 实例详细信息的卷类型。确保 EBS 级别的值与 RDS 级别的值相匹配： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep StorageType</pre> 要获取 RDS 级别的存储吞吐量的预期值，请执行以下操作： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep StorageThroughput</pre>  要获取 RDS 级别的卷 IOPS 的预期值，请执行以下操作： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep Iops</pre> 要获取 EC2 级别的当前存储类型，请执行以下操作： <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep VolumeType</pre>  要获取 EC2 级别的存储吞吐量的当前值，请执行以下操作： <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Throughput</pre> 要获取 EC2 级别的卷 IOPS 的当前值，请执行以下操作： <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Iops</pre>  | 
|  `SP-S1008`  |  EBS 存储卷大小和配置  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：EBS 存储卷“volume-id”的预期设置和已配置设置不匹配。您可以通过在 EC2 级别将 EBS 存储卷配置 [IOPS、吞吐量、卷类型] 修改为其原始值 [IOPS：%s，吞吐量：%s，卷类型：%s] 来解决此问题。如果将来需要修改存储，请使用 RDS 控制台或 CLI。卷大小也已在 EC2 级别从其原始值 [%s] 手动更改。要解决此问题，请创建支持案例。  |   使用以下 CLI 命令比较 EBS 卷“volume-id”详细信息和 RDS 实例详细信息的卷类型。确保 EBS 级别的值与 RDS 级别的值相匹配： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep StorageType</pre> 要获取 RDS 级别的存储吞吐量的预期值，请执行以下操作： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep StorageThroughput</pre>  要获取 RDS 级别的卷 IOPS 的预期值，请执行以下操作： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep Iops</pre> 要获取 EC2 级别的当前存储类型，请执行以下操作： <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep VolumeType</pre>  要获取 EC2 级别的存储吞吐量的当前值，请执行以下操作： <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Throughput</pre> 要获取 EC2 级别的卷 IOPS 的当前值，请执行以下操作： <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Iops</pre> 要获得预期的分配卷大小，请执行以下操作： <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep AllocatedStorage</pre> 要获取实际的分配卷大小，请执行以下操作： <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Size</pre>  | 
|  `SP-S1009`  |  SQS 权限  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：IAM 实例配置文件缺少 Amazon Simple Queue Service（SQS）权限。您可以通过确保与主机关联的 IAM 配置文件具有以下权限来解决此问题：["SQS:SendMessage"、"SQS:ReceiveMessage"、"SQS:DeleteMessage"、"SQS:GetQueueUrl"]。  |    | 
|  `SP-S1010`  |  SQS VPC 端点  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：VPC 端点策略阻止了 Amazon Simple Queue Service（SQS）操作。您可以通过修改 VPC 端点策略以允许所需的 SQS 操作来解决此问题。  |    | 
|  `SP-S1011`  |  事件总线策略  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：事件总线 arn:aws:events:region-1:123456789012:event-bus/default 的基于资源的策略拒绝了 Amazon CloudWatch events:PutEvents 操作。要解决这个问题，请修改基于资源的策略，以支持对 EventBus %s 执行 events:PutEvents 操作。  |    | 
|  `SP-S1012`  |  CloudWatch VPC 权限  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：VPC 端点策略缺少访问 Amazon CloudWatch 事件的权限。要解决这个问题，请修改 VPC 端点策略，以便在 EventBus arn:aws:events:region-1:123456789012:event-bus/default 上支持 events:PutEvents。  |    | 
|  `SP-S1013`  |  服务控制策略  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：AWS Organizations 中的服务控制策略缺少访问 Amazon CloudWatch 事件的权限。要解决这个问题，请修改服务控制策略，以便在 EventBus arn:aws:events:region-1:123456789012:event-bus/default 上支持 events:PutEvents。  |    | 
|  `SP-S1014`  |  IAM 实例配置文件  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：IAM 实例配置文件 %s 权限拒绝 Amazon CloudWatch 事件。要解决这个问题，请在与实例关联的 IAM 配置文件中，将 ["events:PutEvents"] 设置为“Allow”，然后在 EventBus arn:aws:events:region-1:123456789012:event-bus/default 上支持 events:PutEvents。  |    | 
|  `SP-S1015`  |  IAM 实例配置文件  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：IAM 实例配置文件 %s 缺少 Amazon CloudWatch 事件权限。要解决这个问题，请在与实例关联的 IAM 配置文件中包括 ["events:PutEvents"] 权限，然后在 EventBus arn:aws:events:region-1:123456789012:event-bus/default 上支持 events:PutEvents。  |    | 
|  `SP-S1016`  |  IAM 权限边界  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：IAM 实例配置文件 %s 具有拒绝 Amazon CloudWatch 事件的权限边界。要解决这个问题，请在 IAM 实例配置文件权限边界中，对于 EventBus arn:aws:events:region-1:123456789012:event-bus/default 将 ["events:PutEvents"] 设置为“Allow”。  |    | 

**操作系统**


| 事件代码 | 配置区域 | RDS 事件消息 | 验证过程 | 
| --- | --- | --- | --- | 
|  `SP-S2001`  |  SQL 服务状态  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：SQL Server 服务未启动。您可以通过在主机上重启 SQL Server 服务来解决此问题。如果此数据库实例为多可用区数据库实例且重启失败，请停止并启动主机以发起失效转移。  |  | 
|  `SP-S2002`  |  RDS Custom 代理状态  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：RDS Custom 代理服务未安装或无法启动。要解决此问题，可以查看 Windows 事件日志以确定服务无法启动的原因，然后采取适当的步骤来修复问题。如需其他帮助，请创建支持案例。  |  登录到主机并确保 RDS Custom 代理正在运行。 您可以使用以下命令来查看代理状态。 <pre>$name = "RDSCustomAgent"<br />$service = Get-Service $name<br />Write-Host $service.Status</pre> 如果状态不是 `Running`，则可使用以下命令启动该服务： <pre>Start-Service $name</pre> 如果代理无法启动，请检查 Windows 事件以了解其无法启动的原因。代理需要 Windows 用户才能启动该服务。确保 Windows 用户存在并且具有运行该服务的权限。  | 
|  `SP-S2003`  |  SSM 代理状态  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：无法访问 Amazon SSM 代理服务。可以通过使用 `Get-Service AmazonSSMAgent` PowerShell 命令检查服务状态或使用 `Start-Service AmazonSSMAgent` 启动服务来解决此问题。确保允许发往 **ssm**、**ssmmessages** 和 **ec2messages** 区域端点的 HTTPS（端口 443）出站流量。  |  有关更多信息，请参阅 [SSM 代理故障排除](https://docs.aws.amazon.com/systems-manager/latest/userguide/troubleshooting-ssm-agent.html)。 要排查 SSM 端点故障，请参阅[无法连接到 SSM 端点](https://docs.aws.amazon.com/systems-manager/latest/userguide/troubleshooting-ssm-agent.html#systems-manager-ssm-agent-troubleshooting-endpoint-access)和[使用 ssm-cli 排查托管式节点可用性问题](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-cli.html#agent-ts-ssm-cli)。  | 
|  `SP-S2004`  |  RDS Custom 代理登录  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：SQL 登录名 `"$HOSTNAME/RDSAgent”` 出现意外问题。要解决此问题，请创建支持案例。  |  | 
|  `SP-S2005`  |  Timezone  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：Amazon EC2 实例 [%s] 上的时区已更改。可以通过将时区修改回在实例创建期间指定的设置来解决此问题。如果您想创建具有特定时区的实例，请参阅 RDS Custom 文档。  |  运行 `Get-Timezone` PowerShell 命令以确认时区。 有关更多信息，请参阅 [RDS Custom for SQL Server 数据库实例的本地时区](custom-reqs-limits-MS.TimeZone.md)。  | 
|  `SP-S2006`  |  高可用性软件解决方案版本  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：当前实例的高可用性软件解决方案与预期版本不同。要解决此问题，请创建支持案例。  |  | 
|  `SP-S2007`  |  高可用性软件解决方案配置  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：实例 %s 上的高可用性软件解决方案的配置设置已修改为意外的值。要解决此问题，请重启 EC2 实例。当您重启 EC2 实例时，它会自动将设置更新为高可用性软件解决方案所需的配置。  |    | 
| SP-S2008 |  SQL Server 服务   |  RDS Custom 数据库实例设置为 [不受支持的配置]：主机上不存在 SQLServer（MSSQLServer）服务。要解决此问题，请创建支持案例。  |  您可以使用以下命令来查看代理状态。 <pre>$name = "MSSQLServer"<br />$service = Get-Service $name<br />Write-Host $service.Status</pre>  | 
| SP-S2009 | SSL 证书 |  RDS Custom 数据库实例设置为 [不支持的配置]，原因是：非自签名 SSL 证书导致 RDS 中断。要解决此问题，请从受信任的根证书存储中移除非自签名证书。  |  运行以下 PowerShell 命令来查看非自签名证书。 <pre>Get-ChildItem cert:\LocalMachine\root -Recurse | Where-Object {$_.Issuer -ne $_.Subject -and $_.Issuer -notlike "*RDSCustomAgentCA*"}</pre> 有关更多信息，请参阅 [HTTP Error 403.16 when you try to access a website that's hosted on IIS](https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/iis/site-behavior-performance/http-403-forbidden-access-website)。  | 
| SP-S2010 | 根卷存储状态 |  RDS Custom 数据库实例设置为 [不受支持的配置]，原因是：根卷存储已满。要解决此问题，请在根 EBS 卷“volume-id”中释放至少 500 MiB 的存储空间，或者在 EC2 实例“instance-id”上增加卷大小并调整 C 盘的大小。替换 EC2 实例时，根卷大小更改不会持续。  |  使用以下命令查看根（C:）卷上的可用存储空间。 <pre>(Get-PSDrive -Name C).Free / 1MB</pre> 有关修改 EBS 根卷的更多信息，请参阅 [How](https://forums.aws.amazon.com/knowledge-center/expand-ebs-root-volume-windows)  | 

**数据库**


| 事件代码 | 配置区域 | RDS 事件消息 | 验证过程 | 
| --- | --- | --- | --- | 
|  `SP-S3001`  |  SQL Server 共享内存协议  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：SQL Server 共享内存协议被禁用。可以通过在 SQL Server 配置管理器中启用共享内存协议来解决此问题。  |  可以通过检查 **SQL Server 配置管理器 > SQL Server 网络配置 > MSSQLSERVER 的协议> 共享内存**为“已启用”来验证这一点。启用协议后，重启 SQL Server 进程。  | 
|  `SP-S3002`  |  服务主密钥  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：RDS Automation 无法将服务主密钥（SMK）的备份作为新 SMK 生成的一部分。要解决此问题，请创建支持案例。  |    | 
|  `SP-S3003`  |  服务主密钥  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：与服务主密钥（SMK）相关的元数据缺失或不完整。要解决此问题，请创建支持案例。  |    | 
|  `SP-S3004`  |  数据库引擎版本  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：预期的 SQL Server 版本和已安装的 SQL Server 版本不匹配：不支持在 RDS Custom for SQL Server 上修改 SQL Server 版本。此外，不支持在 RDS Custom EC2 实例上手动更改 SQL Server 版本。要解决此问题，请创建支持案例。  |   运行以下查询以获取 SQL 版本： <pre>select @@version</pre>  运行以下 AWS CLI 命令以获取 RDS SQL 引擎版本： <pre>aws rds describe-db-instances \<br />--db-instance-identifier db-instance-name |grep EngineVersion<br />aws rds describe-db-instances \<br />--db-instance-identifier db-instance-name |grep Engine</pre> 有关更多信息，请参阅[修改 RDS Custom for SQL Server 数据库实例](custom-managing.modify-sqlserver.md)和[升级数据库实例 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。  | 
|  `SP-S3005`   |  数据库引擎版本  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：当前 SQL Server 版本与预期的 SQL Server 版本 [%s] 不匹配：不支持在 RDS Custom for SQL Server 上修改 SQL Server 版本。要解决此问题，请创建支持案例。  |   运行以下查询可获取 SQL 版本： 

**Example**  

```
select @@version
```  运行以下 AWS CLI 命令以获取 RDS SQL 引擎版本： <pre>aws rds describe-db-instances \<br />--db-instance-identifier db-instance-name |grep Engine</pre>  | 
|  `SP-S3006`   |  数据库引擎版本  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：当前 SQL Server 版本与预期的 SQL Server 版本 [%s] 不匹配：不能在 RDS Custom EC2 实例上手动更改 SQL Server 版本。要解决此问题，请创建支持案例。要在日后对 SQL Server 版本进行任何修改，可以从 AWS RDS 控制台或通过 modify-db-instance CLI 命令修改实例。  |   运行以下查询以获取 SQL 版本： 

**Example**  

```
select @@version
```  运行以下 AWS CLI 命令以获取 RDS SQL 引擎版本： <pre>aws rds describe-db-instances \<br />--db-instance-identifier db-instance-name |grep EngineVersion</pre> 有关更多信息，请参阅[修改 RDS Custom for SQL Server 数据库实例](custom-managing.modify-sqlserver.md)和[升级数据库实例 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。  | 
|  `SP-S3007`  |  数据库文件位置  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：数据库文件是在 D:\$1 驱动器外部配置的。可以通过确保所有数据库文件（包括 ROW、LOG、FILESTREAM 等...）都存储在 D:\$1 驱动器上来解决此问题。  |  运行以下查询以列出不在默认路径中的数据库文件的位置： <pre>USE master;<br />SELECT physical_name as  files_not_in_default_path<br />FROM sys.master_files<br />WHERE SUBSTRING(physical_name,1,3)!='D:\';<br /></pre>  | 
|  `SP-S3008`  |  已超出数据库计数限制  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是：数据库实例上的数据库总数超过了 5000 的最大限制。要解决这个问题，请将数据库数量减少到支持的最大限制以下。  |  使用以下命令查看数据库总计数： <pre>SELECT COUNT(name) as databaseCount<br />FROM sys.databases<br />WHERE name not in ('tempdb','master','model','msdb','DWDiagnostics','DWConfiguration','DWQueue');</pre>  | 

## 在 RDS Custom for SQL Server 中排查 `Storage-Full` 问题
<a name="custom-troubleshooting-storage-full"></a>

RDS Custom 还会监控根（C:）卷。当根卷的可用磁盘空间小于 500 MiB 时，RDS Custom for SQL Server 数据库实例将移到 `unsupported-configuration` 状态。请参阅 `Event SP-S2010` 中的 [修复 RDS Custom for SQL Server 中不支持的配置](#custom-troubleshooting-sqlserver.fix-unsupported)。

## 对 RDS Custom for SQL Server 中启用 TDE 的数据库的 PENDING\$1RECOVERY 状态进行故障排除
<a name="custom-troubleshooting-sqlserver.pending_recovery"></a>

如果自动解密遇到问题，启用了透明数据加密（TDE）的 SQL Server 数据库可能会保持 `PENDING_RECOVERY` 状态。如果源数据库实例服务主密钥（SMK）备份文件（存储在您账户的 RDS Custom 托管式 S3 存储桶中）在还原完成之前已被删除，则通常会在数据库实例还原后发生这种情况。

要启用自动解密并使启用 TDE 的数据库联机，需要使用密码打开数据库主密钥（DMK），然后使用 SMK 对 DMK 进行加密。

使用以下 SQL Server 命令作为参考：

```
-- Identify PENDING_RECOVERY TDE databases
USE MASTER;
GO
SELECT name, is_encrypted, state_desc FROM sys.databases;
GO

-- Open DMK using password
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';
GO

-- Encrypt DMK using SMK
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;
GO

-- Close SMK
CLOSE MASTER KEY;
GO

-- Bring the TDE databases online
ALTER DATABASE <database_name> SET ONLINE;
GO

-- Verify TDE databases are now in ONLINE state
SELECT name, is_encrypted, state_desc FROM sys.databases;
GO
```