

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# `AWSEC2-SQLServerDBRestore`
<a name="automation-awsec2-sqlserverdbrestore"></a>

**描述**

`AWSEC2-SQLServerDBRestore` 运行手册将存储在 Amazon S3 中的 Microsoft SQL Server 数据库备份还原到在 Amazon Elastic Compute Cloud (EC2) Linux 实例上运行的 SQL Server 2017。您可以提供自己的运行 SQL Server 2017 Linux 的 EC2 实例。如果未提供 EC2 实例，自动化将启动，并使用 SQL Server 2017 配置新的 Ubuntu 16.04 EC2 实例。自动化支持还原完整、差异和事务日志备份。此自动化将接收多个数据库备份并自动还原所提供的文件中每个数据库的最近的有效备份。

要自动将本地 SQL Server 数据库备份和恢复到运行 SQL Server 2017 Linux 的 EC2 实例，您可以使用 AWS签名的 PowerShell脚本[https://awsec2-server-upgrade-prod.s3.us-west-1.amazonaws.com/MigrateSQLServerToEC2Linux.ps1](https://awsec2-server-upgrade-prod.s3.us-west-1.amazonaws.com/MigrateSQLServerToEC2Linux.ps1)。

**重要**  
自动化每次运行时，此运行手册将重置 SQL Server 服务器管理员 (SA) 用户密码。自动化完成后，在连接到 SQL Server 实例之前，您必须重新设置您自己的 SA 用户密码。

[运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSEC2-SQLServerDBRestore)

**文档类型**

自动化

**所有者**

Amazon

**平台**

Linux

## 先决条件
<a name="sql-server-db-restore-prerequisites"></a>

要运行此自动化，您必须满足以下先决条件：
+ 运行此自动化的 IAM 用户或角色必须拥有内联策略，并附有 [所需的 IAM 权限](#sql-server-db-restore-policy) 中概述的权限。
+ 如果您提供自己的 EC2 实例：
  + 您提供的 EC2 实例必须是运行微软 SQL Server 2017 的 Linux 实例。
  + 附加了 `AmazonSSMManagedInstanceCore` 托管策略的 AWS Identity and Access Management (IAM) 实例配置文件配置必须您提供的 EC2 实例。有关更多信息，请参阅[为 Systems Manager 创建 IAM 实例配置文件](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)。
  + EC2 实例上必须安装 SSM 代理。有关更多信息，请参阅[在 Linux 的 EC2 实例上安装和配置 SSM 代理](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-agent.html)。
  + EC2 实例必须具有足够的可用磁盘空间来下载和还原 SQL Server 备份。

## 限制
<a name="sql-server-db-restore-limitations"></a>

此自动化不支持还原到在 Windows Server 的 EC2 实例上运行的 SQL Server。此自动化仅还原与 SQL Server Linux 2017 兼容的数据库备份。有关更多信息，请参阅 [Linux 上的 SQL Server 2017 的版本和支持功能](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-editions-and-components-2017?view=sql-server-2017)。

## 参数
<a name="sql-server-db-restore-parameters"></a>

此自动化具有以下参数：
+ **DatabaseNames**

  类型：字符串

  说明：（可选）要还原的数据库的名称的逗号分隔列表。
+ **DataDirectorySize**

  类型：字符串

  说明：（可选）所需的新 EC2 实例的 SQL Server 数据目录的卷大小 (GiB)。

  默认值：100
+ **KeyPair**

  类型：字符串

  说明：（可选）要在创建新 EC2 实例时使用的密钥对。
+ **IamInstanceProfileName**

  类型：字符串

  说明：（可选）要附加到新 EC2 实例的 IAM 实例配置文件。IAM 实例配置文件必须附加了 `AmazonSSMManagedInstanceCore` 托管策略。
+ **InstanceId**

  类型：字符串

  说明：（可选）Linux 上的运行 SQL Server 2017 的实例。如果未提供， InstanceId 则自动化会使用提供的 InstanceType 和 SQLServer版本启动新的 EC2 实例。
+ **InstanceType**

  类型：字符串

  说明：（可选）要启动的 EC2 实例的实例类型。
+ **iss3 PresignedUrl**

  类型：字符串

  说明：（可选）如果 S3Input 是预签名 S3 URL，则表示 `yes`。

  默认值：No

  有效值：是 \$1 否 
+ **LogDirectorySize**

  类型：字符串

  说明：（可选）所需的新 EC2 实例的 SQL Server 日志目录的卷大小 (GiB)。

  默认值：100
+ **S3Input**

  类型：字符串

  描述：（必填）S3 存储桶名称、以逗号分隔的 S3 对象密钥列表，或 URLs 包含要还原的 SQL 备份文件的以逗号分隔的预签名 S3 列表。
+ **SQLServer版本**

  类型：字符串

  说明：（可选）要安装在新创建的 EC2 实例上的 SQL Server 2017 版本。

  有效值：Standard \$1 Enterprise \$1 Web \$1 Express
+ **SubnetId**

  类型：字符串

  说明：（可选）要在其中启动新 EC2 实例的子网。子网必须与 AWS 服务有出站连接。如果未提供值， SubnetId 则自动化将使用默认子网。
+ **TempDbDirectorySize**

  类型：字符串

  说明：（可选）所需的新 EC2 实例的 SQL Server TempDB 目录的卷大小 (GiB)。

  默认值：100

## 所需的 IAM 权限
<a name="sql-server-db-restore-policy"></a>

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags",
                "ec2:DescribeImages",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstances",
                "ec2:RebootInstances",
                "ec2:RunInstances",
                "ssm:DescribeInstanceInformation",
                "ssm:GetAutomationExecution",
                "ssm:ListCommandInvocations",
                "ssm:ListCommands",
                "ssm:SendCommand",
                "ssm:StartAutomationExecution"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/ROLENAME"
        }
    ]
}
```

------

## 文档步骤
<a name="sql-server-db-restore-steps"></a>

要使用此自动化，请按照适用于实例类型的步骤进行操作：

**对于新 EC2 实例：**

1. `aws:executeAwsApi` - 在 Ubuntu 16.04 上检索 SQL Server 2017 的 AMI ID。

1. `aws:runInstances` - 启动适用于 Linux 的一个新 EC2 实例。

1. `aws:waitForAwsResourceProperty` - 等待新创建的 EC2 实例准备就绪。

1. `aws:executeAwsApi` - 如果实例未准备就绪，将重启实例。

1. `aws:assertAwsResourceProperty` - 验证安装了 SSM 代理。

1. `aws:runCommand`-在中运行 SQL Server 恢复脚本 PowerShell。

**对于现有 EC2 实例：**

1. `aws:waitForAwsResourceProperty` - 验证EC2 实例是否就绪。

1. `aws:executeAwsApi` - 如果实例未准备就绪，将重启实例。

1. `aws:assertAwsResourceProperty` - 验证安装了 SSM 代理。

1. `aws:runCommand`-在中运行 SQL Server 恢复脚本 PowerShell。

**输出**

获取实例。 InstanceId

restoreToNew实例. 输出

restoreToExisting实例. 输出