

# 创建适用于 RDS for SQL Server 的自定义引擎版本
<a name="sqlserver-dev-edition.creating-cev"></a>

适用于 RDS for SQL Server 的自定义引擎版本（CEV）由导入到 Amazon RDS 的 SQL Server 开发人员版安装媒体组成。需要将基本 ISO 安装程序和累积更新文件（.exe）上传到您的 Amazon S3 存储桶。上传后，您应向 RDS 提供 Amazon S3 位置，以便其下载、验证以及随后创建您的 CEV。

## 命名限制
<a name="sqlserver-dev-edition.create-cev.naming-limitations"></a>

创建 CEV 时，必须遵循特定的命名约定：
+ CEV 名称必须遵循模式 `major-version.minor-version.customized-string`。
+ `customized-string` 可以包含 1–50 个字母数字字符、下划线、短划线和句点。例如：对于 SQL Server 2022，为 `16.00.4215.2.my-dev-cev`。

要列出所有支持的引擎版本，请使用以下命令：

```
aws rds describe-db-engine-versions --engine sqlserver-dev-ee --output json --query "{DBEngineVersions: DBEngineVersions[?Status=='requires-custom-engine-version'].{Engine: Engine, EngineVersion: EngineVersion, Status: Status, DBEngineVersionDescription: DBEngineVersionDescription}}" 

{
    "DBEngineVersions": [
        {
            "Engine": "sqlserver-dev-ee",
            "EngineVersion": "16.00.4215.2.v1",
            "Status": "requires-custom-engine-version",
            "DBEngineDescription": "Microsoft SQL Server Enterprise Developer Edition",
            "DBEngineVersionDescription": "SQL Server 2022 16.00.4215.2.v1"
        }
    ]
}
```

## Amazon CLI
<a name="sqlserver-dev-edition.create-cev.CLI"></a>

**创建自定义引擎版本**
+ 使用 [create-custom-db-engine-version](https://docs.amazonaws.cn/cli/latest/reference/rds/create-custom-db-engine-version.html) 命令。

  以下选项为必填：
  + `--engine`
  + `--engine-version`
  + `--database-installation-files-s3-bucket-name`
  + `--database-installation-files`
  + `--region`

  您还可以指定以下选项：
  + `--database-installation-files-s3-prefix`
  + `--description`
  + `--tags`

  ```
  aws rds create-custom-db-engine-version \
  --engine sqlserver-dev-ee \
  --engine-version 16.00.4215.2.cev-dev-ss2022-cu21 \
  --region us-west-2 \
  --database-installation-files-s3-bucket-name my-s3-installation-media-bucket \
  --database-installation-files-s3-prefix sqlserver-dev-media \
  --database-installation-files "SQLServer2022-x64-ENU-Dev.iso" "SQLServer2022-KB5065865-x64.exe"
  ```

创建 CEV 通常需要 15-30 分钟。要监控 CEV 创建进度，请使用以下命令：

```
# Check CEV status
aws rds describe-db-engine-versions \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.my-dev-cev \
--region us-west-2
```

## RDS for SQL Server CEV 的生命周期
<a name="sqlserver-dev-cev-lifecycle"></a>

在 RDS for SQL Server 上使用 SQL Server 开发人员版时，自定义引擎版本会经历不同的生命周期状态。


| 生命周期状态 | 说明 | 何时出现 | 可用操作 | 
| --- | --- | --- | --- | 
|  pending-validation  |  创建 CEV 时的初始状态  |  这是使用 `create-custom-db-engine-version` 命令创建后的初始状态。  |  通过 `describe-db-engine-version` 监控状态。  | 
|  正在验证  |  CEV 验证状态  |  Amazon RDS 正在验证您的自定义引擎版本（CEV）。这个异步过程可能需要一些时间才能完成。  |  监控状态，直到验证完成。  | 
|  available  |  自定义引擎版本（CEV）验证成功完成。  |  自定义引擎版本（CEV）现已可用。Amazon RDS 成功验证了您的 SQL Server ISO 和累积更新文件。您现在可以使用此 CEV 创建数据库实例。  |  使用此 CEV 创建数据库实例  | 
|  已失败  |  由于验证检查失败，RDS for SQL Server 无法创建自定义引擎版本（CEV）。  |  ISO 和累积媒体验证失败。   |  ISO 验证失败。在 `describe-db-engine-version` 中检查失败原因，修复任何文件问题，例如哈希不匹配或内容损坏，然后重新创建自定义引擎版本（CEV）。  | 
|  删除  |  正在删除自定义引擎版本（CEV）  |  在客户调用 `delete-custom-db-engine-version` 之后，直到删除工作流程完成。  |  通过 `describe-db-engine-version` 监控状态。  | 
|  incompatible-installation-media  |  Amazon RDS 无法验证为自定义引擎版本（CEV）提供的安装媒体  |  自定义引擎版本（CEV）验证失败。这是最终状态。  |  有关验证失败原因的信息，请通过 `describe-db-engine-versions` 参阅 failureReason；删除 CEV。  | 

### 描述 CEV 状态
<a name="sqlserver-dev-cev-status-check"></a>

您可以使用 Amazon CLI 查看 CEV 的状态。

```
1. aws rds describe-db-engine-versions \
2. --engine sqlserver-dev-ee \
3. --engine-version 16.00.4215.2.my-dev-cev \
4. --region us-west-2 \
5. --query 'DBEngineVersions[0].{Version:EngineVersion,Status:Status}'
```

示例输出

```
| DescribeDBEngineVersions                     |
+------------+---------------------------------+
| Status | Version                             |
+------------+---------------------------------+
| available | 16.00.4215.2.cev-dev-ss2022-cu21    |
+------------+---------------------------------+
```

当 CEV 显示 `failed` 状态时，您可以使用以下命令确定原因：

```
1. aws rds describe-db-engine-versions \
2. --engine sqlserver-dev-ee \
3. --engine-version 16.00.4215.2.my-dev-cev \
4. --region us-west-2 \
5. --query 'DBEngineVersions[0].{Version:EngineVersion,Status:Status,FailureReason:FailureReason}'
```