

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# `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 인스턴스를 제공하지 않을 경우, 자동화가 새 Ubuntu 16.04 EC2 인스턴스를 시작하고 SQL Server 2017을 사용하여 구성합니다. 자동화는 전체, 차등 및 트랜잭션 로그 백업을 지원합니다. 이 자동화는 복수의 데이터베이스 백업 파일을 수락하고 제공된 파일에서 각 데이터베이스의 유효한 가장 최근 백업을 자동으로 복원합니다.

온프레미스 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 인스턴스는 Microsoft SQL Server 2017을 실행하는 Linux 인스턴스여야 합니다.
  + 제공하는 EC2 인스턴스는 `AmazonSSMManagedInstanceCore` 관리형 정책이 연결된 AWS Identity and Access Management (IAM) 인스턴스 프로파일로 구성되어야 합니다. 자세한 내용은 [Systems Manager용 IAM 인스턴스 프로파일 생성](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)을 참조하세요.
  + SSM Agent가 EC2 인스턴스에 설치되어야 합니다. 자세한 내용은 [Linux용 EC2 인스턴스에 SSM Agent 설치 및 구성](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 Data 디렉터리의 원하는 볼륨 크기(GiB)입니다.

  기본 값: 100
+ **KeyPair**

  유형: 문자열

  설명: (선택 사항) 새 EC2 인스턴스를 생성할 때 사용할 키 페어입니다.
+ **IamInstanceProfileName**

  유형: 문자열

  설명: (선택 사항) 새 EC2 인스턴스에 연결할 IAM 인스턴스 프로파일입니다. IAM 인스턴스 프로파일은 `AmazonSSMManagedInstanceCore` 관리형 정책이 연결되어 있어야 합니다.
+ **InstanceId**

  유형: 문자열

  설명: (선택 사항) Linux의 SQL Server 2017을 실행하는 인스턴스입니다. 제공된 InstanceId가 없을 경우 Automation은 제공된 InstanceType 및 SQLServerEdition을 사용하여 새 EC2 인스턴스를 시작합니다.
+ **InstanceType**

  유형: 문자열

  설명: (선택 사항) 시작할 EC2 인스턴스의 인스턴스 유형입니다.
+ **IsS3PresignedUrl**

  유형: 문자열

  설명: (선택 사항) S3Input이 미리 서명된 S3 URL일 경우 `yes`을 표시합니다.

  기본값: no

  유효한 값: yes \$1 no 
+ **LogDirectorySize**

  유형: 문자열

  설명: (선택 사항) 새 EC2 인스턴스에 사용할 SQL Server Log 디렉터리의 원하는 볼륨 크기(GiB)입니다.

  기본 값: 100
+ **S3Input**

  유형: 문자열

  설명: (필수) 복원할 SQL 백업 파일을 포함하는 S3 버킷 이름, S3 객체 키의 쉼표로 분리된 목록 또는 미리 서명된 S3 URL의 쉼표로 구분된 목록입니다.
+ **SQLServerEdition**

  유형: 문자열

  설명: (선택 사항) 새로 생성된 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 Agent가 설치되었는지 확인합니다.

1. `aws:runCommand` - PowerShell에서 SQL Server 복원 스크립트를 실행합니다.

**기존 EC2 인스턴스의 경우:**

1. `aws:waitForAwsResourceProperty` - EC2 인스턴스가 준비되었는지 확인합니다.

1. `aws:executeAwsApi` - 인스턴스가 준비되지 않은 경우 인스턴스를 재부팅합니다.

1. `aws:assertAwsResourceProperty` - SSM Agent가 설치되었는지 확인합니다.

1. `aws:runCommand` - PowerShell에서 SQL Server 복원 스크립트를 실행합니다.

**출력**

getInstance.InstanceId

restoreToNewInstance.Output

restoreToExistingInstance.Output