

# 针对 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
```