

# 创建适用于 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"
        }
    ]
}
```

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

**创建自定义引擎版本**
+ 使用 [create-custom-db-engine-version](https://docs.aws.amazon.com/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>

您可以使用 AWS 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}'
```