

# Amazon RDS for SQL Server에서 SQL Server Integration Services 지원
<a name="Appendix.SQLServer.Options.SSIS"></a>

Microsoft SQL Server Integration Services(SSIS)는 광범위한 데이터 마이그레이션 작업을 수행하는 데 사용할 수 있는 구성 요소입니다. SSIS는 데이터 통합 및 워크플로우 애플리케이션용 플랫폼입니다. 이는 데이터 추출, 변환 및 로드(ETL)에 사용되는 데이터 웨어하우징 도구를 특징으로 합니다. 이 도구를 사용하여 SQL Server 데이터베이스의 유지 관리 및 다차원 큐브 데이터 업데이트를 자동화할 수도 있습니다.

SSIS 프로젝트는 XML 기반 .dtsx 파일로 저장된 패키지로 구성됩니다. 패키지에는 제어 흐름 및 데이터 흐름이 포함될 수 있습니다. 데이터 흐름을 사용하여 ETL 작업을 나타냅니다. 배포 후 패키지는 SSISDB 데이터베이스의 SQL Server에 저장됩니다. SSISDB는 전체 복구 모드의 OLTP(온라인 트랜잭션 처리) 데이터베이스입니다.

Amazon RDS for SQL Server는 RDS DB 인스턴스에서 SSRS를 직접 실행할 수 있도록 지원합니다. 기존 DB 인스턴스 또는 새 DB 인스턴스에서 SSRS를 활성화할 수 있습니다. SSIS는 데이터베이스 엔진과 동일한 DB 인스턴스에 설치됩니다.

RDS는 다음 버전에서 SQL Server Standard 및 Enterprise Edition용 SSIS를 지원합니다.
+ SQL Server 2022, 모든 버전
+ SQL Server 2019, 버전 15.00.4043.16.v1 이상
+ SQL Server 2017, 버전 14.00.3223.3.v1 이상
+ SQL Server 2016, 버전 13.00.5426.0.v1 이상

**Contents**
+ [

## 제한 및 권장 사항
](#SSIS.Limitations)
+ [

## SSIS 활성화
](#SSIS.Enabling)
  + [

### SSIS용 옵션 그룹 생성
](#SSIS.OptionGroup)
  + [

### 옵션 그룹에 SSIS 옵션 추가
](#SSIS.Add)
  + [

### SSIS용 파라미터 그룹 생성
](#SSIS.CreateParamGroup)
  + [

### SSIS용 파라미터 수정
](#SSIS.ModifyParam)
  + [

### 옵션 그룹 및 파라미터 그룹을 DB 인스턴스와 연결
](#SSIS.Apply)
  + [

### S3 통합 활성화
](#SSIS.EnableS3)
+ [

# SSISDB에 대한 관리 권한
](SSIS.Permissions.md)
  + [

## SSIS용 Windows 인증 사용자 설정
](SSIS.Permissions.md#SSIS.Use.Auth)
+ [

# SSIS 프로젝트 배포
](SSIS.Deploy.md)
+ [

# 배포 작업의 상태 모니터링
](SSIS.Monitor.md)
+ [

# SSIS 사용
](SSIS.Use.md)
  + [

## SSIS 프로젝트에 대한 데이터베이스 연결 관리자 설정
](SSIS.Use.md#SSIS.Use.ConnMgrs)
  + [

## SSIS 프록시 생성
](SSIS.Use.md#SSIS.Use.Proxy)
  + [

## SQL Server 에이전트를 사용하여 SSIS 패키지 예약
](SSIS.Use.md#SSIS.Use.Schedule)
  + [

## 프록시에서 SSIS 액세스 취소
](SSIS.Use.md#SSIS.Use.Revoke)
+ [

# SSIS 데이터베이스 비활성화 및 삭제
](SSIS.DisableDrop.md)
  + [

## SSIS 비활성화
](SSIS.DisableDrop.md#SSIS.Disable)
  + [

## SSISDB 데이터베이스 삭제
](SSIS.DisableDrop.md#SSIS.Drop)

## 제한 및 권장 사항
<a name="SSIS.Limitations"></a>

RDS for SQL Server에서 SSRS를 실행하는 경우 다음과 같은 제한 및 권장 사항이 적용됩니다.
+ DB 인스턴스에는 `clr enabled` 파라미터가 1로 설정된 연결된 파라미터 그룹이 있어야 합니다. 자세한 내용은 [SSIS용 파라미터 수정](#SSIS.ModifyParam) 섹션을 참조하세요.
**참고**  
SQL Server 2017 또는 2019에서 `clr enabled` 파라미터를 활성화하면 DB 인스턴스에서 CLR(공통 언어 런타임)을 사용할 수 없습니다. 자세한 내용은 [지원되지 않는 기능과 지원이 제한된 기능](SQLServer.Concepts.General.FeatureNonSupport.md) 섹션을 참조하세요.
+ 다음 제어 흐름 작업이 지원됩니다.
  + 분석 서비스 DDL 실행 작업
  + 분석 서비스 처리 작업
  + 대량 삽입 작업
  + 데이터베이스 무결성 검사 작업
  + 데이터 흐름 작업
  + 데이터 마이닝 쿼리 작업
  + 데이터 프로파일링 작업
  + 패키지 실행 작업
  + SQL Server 에이전트 작업 실행 작업
  + SQL 실행 작업
  + T-SQL 문 실행 작업
  + 운영자에게 알림 작업
  + 인덱스 재구축 작업
  + 인덱스 재구성 작업
  + 데이터베이스 축소 작업
  + 데이터베이스 전송 작업
  + 작업 전송 작업
  + 로그인 전송 작업
  + SQL Server 개체 전송 작업
  + 통계 업데이트 작업
+ 프로젝트 배포만 지원됩니다.
+ SQL Server 에이전트를 사용하여 SSIS 패키지를 실행할 수 있습니다.
+ SSIS 로그 레코드는 사용자가 만든 데이터베이스에만 삽입할 수 있습니다.
+ 파일 작업에는 `D:\S3` 폴더만 사용합니다. 다른 디렉터리에 있는 파일은 삭제됩니다. 다른 파일 위치 세부 정보를 숙지하십시오.
  + SSIS 프로젝트 입력 및 출력 파일을 `D:\S3` 폴더에 배치합니다.
  + 데이터 흐름 작업의 경우 `BLOBTempStoragePath` 및 `BufferTempStoragePath`의 위치를 `D:\S3` 폴더 내의 파일로 변경합니다. 파일 경로는 `D:\S3\`로 시작되어야 합니다.
  + 파일 연결에 사용되는 모든 파라미터, 변수 및 표현식이 `D:\S3` 폴더를 가리키는지 확인합니다.
  + 다중 AZ 인스턴스에서 장애 조치 후 `D:\S3` 폴더에 SSIS에서 생성한 파일이 삭제됩니다. 자세한 내용은 [S3 통합에 대한 다중 AZ 제한 사항](User.SQLServer.Options.S3-integration.md#S3-MAZ) 섹션을 참조하세요.
  + `D:\S3` 폴더에 SSIS에서 생성한 파일을 Amazon S3 버킷에 업로드하여 내구성을 높입니다.
+ 열 가져오기 및 열 내보내기 변환과 데이터 흐름 작업의 스크립트 구성 요소는 지원되지 않습니다.
+ SSIS 패키지 실행 시 덤프를 활성화할 수 없으며 SSIS 패키지에 데이터 탭을 추가할 수 없습니다.
+ SSIS 확장 기능은 지원되지 않습니다.
+ 프로젝트를 직접 배포할 수 없습니다. 이를 수행할 RDS 저장 프로시저를 제공합니다. 자세한 내용은 [SSIS 프로젝트 배포](SSIS.Deploy.md) 섹션을 참조하세요.
+ RDS에 배포하기 위한 `DoNotSavePasswords` 보호 모드를 사용하여 SSIS 프로젝트(.ispac) 파일을 빌드합니다.
+ 읽기 전용 복제본이 있는 Always On 인스턴스에서는 SSIS가 지원되지 않습니다.
+ `SSIS` 옵션과 연결된 SSISDB 데이터베이스는 백업할 수 없습니다.
+ SSIS의 다른 인스턴스에서 SSISDB 데이터베이스를 가져오고 복원하는 것은 지원되지 않습니다.
+ 다른 SQL Server DB 인스턴스나 Oracle 데이터 소스에 연결할 수 있습니다. MySQL이나 PostgreSQL 같은 다른 데이터베이스 엔진에 연결하는 것은 RDS for SQL Server의 SSIS에서 지원되지 않습니다. Oracle 데이터 소스 연결에 대한 자세한 내용은 [Oracle OLEDB 포함 연결된 서버](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md) 단원을 참조하세요.
+ SSIS는 온프레미스 도메인에 대한 발신 신뢰가 있는 도메인 조인 인스턴스를 지원하지 않습니다. 발신 신뢰를 사용하는 경우 로컬 AWS 도메인의 계정에서 SSIS 작업을 실행합니다.
+ 파일 시스템 기반 패키지 실행은 지원되지 않습니다.

## SSIS 활성화
<a name="SSIS.Enabling"></a>

SSIS 옵션을 DB 인스턴스에 추가하여 SSIS를 활성화합니다. 다음 프로세스를 사용합니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 선택합니다.

1. [`SSIS`] 옵션을 옵션 그룹에 추가합니다.

1. 새 파라미터 그룹을 생성하거나 기존 파라미터 그룹을 선택합니다.

1. 파라미터 그룹을 수정하여 `clr enabled` 파라미터를 1로 설정합니다.

1. 옵션 그룹 및 파라미터 그룹을 DB 인스턴스와 연결합니다.

1. Amazon S3 통합을 활성화합니다.

**참고**  
이름이 SSISDB이거나 예약된 SSIS 로그인이 있는 데이터베이스가 DB 인스턴스에 이미 있는 경우 인스턴스에서 SSIS를 활성화할 수 없습니다.

### SSIS용 옵션 그룹 생성
<a name="SSIS.OptionGroup"></a>

SSIS를 사용하려면 사용할 DB 인스턴스의 SQL Server 에디션 및 버전에 해당하는 옵션 그룹을 생성하거나 수정합니다. 이렇게 하려면 AWS Management Console 또는 AWS CLI를 사용합니다.

#### 콘솔
<a name="SSIS.OptionGroup.Console"></a>

다음 절차에서는 SQL Server Standard Edition 2016에 대한 옵션 그룹을 생성합니다.

**옵션 그룹을 생성하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **옵션 그룹**을 선택합니다.

1. **그룹 생성**을 선택합니다.

1. **보안 그룹 생성** 창에서 다음과 같이 합니다.

   1. [**이름(Name)**]에 AWS 계정 내에서 쉽게 식별할 수 있는 옵션 그룹 이름을 입력합니다(예: **ssis-se-2016**). 이름은 글자, 숫자 및 하이픈만 사용 가능합니다.

   1. **설명**에 옵션 그룹에 대한 간단한 설명을 입력합니다(예: **SSIS option group for SQL Server SE 2016**). 이 설명은 표시 용도로만 사용됩니다.

   1. **엔진**에 대해 **sqlserver-se**를 선택합니다.

   1. **메이저 엔진 버전**에 **13.00**을 선택합니다.

1. **생성(Create)**을 선택합니다.

#### CLI
<a name="SSIS.OptionGroup.CLI"></a>

다음 절차에서는 SQL Server Standard Edition 2016에 대한 옵션 그룹을 생성합니다.

**옵션 그룹을 생성하려면**
+ 다음 명령 중 하나를 실행합니다.  
**Example**  

  대상 LinuxmacOS, 또는Unix:

  ```
  aws rds create-option-group \
      --option-group-name ssis-se-2016 \
      --engine-name sqlserver-se \
      --major-engine-version 13.00 \
      --option-group-description "SSIS option group for SQL Server SE 2016"
  ```

  Windows의 경우:

  ```
  aws rds create-option-group ^
      --option-group-name ssis-se-2016 ^
      --engine-name sqlserver-se ^
      --major-engine-version 13.00 ^
      --option-group-description "SSIS option group for SQL Server SE 2016"
  ```

### 옵션 그룹에 SSIS 옵션 추가
<a name="SSIS.Add"></a>

그런 다음 AWS Management Console 또는 AWS CLI를 사용하여 `SSIS` 옵션을 옵션 그룹에 추가합니다.

#### 콘솔
<a name="SSIS.Add.Console"></a>

**SSIS 옵션을 추가하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **옵션 그룹**을 선택합니다.

1. 이 예제에서는 방금 생성한 옵션 그룹인 **ssis-se-2016**을 선택합니다.

1. **옵션 추가**를 선택합니다.

1. **옵션 세부 정보**에서 **옵션 이름**으로 **SSIS**를 선택합니다.

1. **예약**에서 옵션을 즉시 추가할지 또는 다음 유지 관리 기간에 추가할지를 선택합니다.

1. **옵션 추가**를 선택합니다.

#### CLI
<a name="SSIS.Add.CLI"></a>

**SSIS 옵션을 추가하려면**
+ [`SSIS`] 옵션을 옵션 그룹에 추가합니다.  
**Example**  

  대상 LinuxmacOS, 또는Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name ssis-se-2016 \
      --options OptionName=SSIS \
      --apply-immediately
  ```

  Windows의 경우:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name ssis-se-2016 ^
      --options OptionName=SSIS ^
      --apply-immediately
  ```

### SSIS용 파라미터 그룹 생성
<a name="SSIS.CreateParamGroup"></a>

SSIS를 사용할 DB 인스턴스의 SQL Server 에디션 및 버전에 해당하는 `clr enabled` 파라미터의 파라미터 그룹을 생성하거나 수정합니다.

#### 콘솔
<a name="SSIS.CreateParamGroup.Console"></a>

다음 절차에서는 SQL Server Standard Edition 2016에 대한 파라미터 그룹을 생성합니다.

**파라미터 그룹을 생성하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **파라미터 그룹**을 선택합니다.

1. [**Create parameter group**]을 선택합니다.

1. **서브넷 그룹 생성** 창에서 다음을 수행합니다.

   1. **파라미터 그룹 패밀리**에서 **sqlserver-se-13.0**을 선택합니다.

   1. **그룹 이름**에 파라미터 그룹의 식별자(예: **ssis-sqlserver-se-13**)를 입력합니다.

   1. **설명**에 **clr enabled parameter group**를 입력합니다.

1. **생성(Create)**을 선택합니다.

#### CLI
<a name="SSIS.CreateParamGroup.CLI"></a>

다음 절차에서는 SQL Server Standard Edition 2016에 대한 파라미터 그룹을 생성합니다.

**파라미터 그룹을 생성하려면**
+ 다음 명령 중 하나를 실행합니다.  
**Example**  

  대상 LinuxmacOS, 또는Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "clr enabled parameter group"
  ```

  Windows의 경우:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "clr enabled parameter group"
  ```

### SSIS용 파라미터 수정
<a name="SSIS.ModifyParam"></a>

SQL Server 에디션 및 DB 인스턴스의 버전에 해당하는 파라미터 그룹의 `clr enabled` 파라미터를 수정합니다. SSIS의 경우 `clr enabled` 파라미터를 1로 설정합니다.

#### 콘솔
<a name="SSIS.ModifyParam.Console"></a>

다음 절차에서는 SQL Server Standard Edition 2016에 대해 생성한 파라미터 그룹을 수정합니다.

**파라미터 그룹을 수정하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **파라미터 그룹**을 선택합니다.

1. 파라미터 그룹(예: **ssis-sqlserver-se-13**)을 선택합니다.

1. **파라미터**에서 파라미터 목록을 **clr**로 필터링합니다.

1. **clr 활성**을 선택합니다.

1. **파라미터 편집**을 선택합니다.

1. **값**에서 **1**을 선택합니다.

1. **변경 사항 저장**을 선택합니다.

#### CLI
<a name="SSIS.ModifyParam.CLI"></a>

다음 절차에서는 SQL Server Standard Edition 2016에 대해 생성한 파라미터 그룹을 수정합니다.

**파라미터 그룹을 수정하려면**
+ 다음 명령 중 하나를 실행합니다.  
**Example**  

  대상 LinuxmacOS, 또는Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --parameters "ParameterName='clr enabled',ParameterValue=1,ApplyMethod=immediate"
  ```

  Windows의 경우:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --parameters "ParameterName='clr enabled',ParameterValue=1,ApplyMethod=immediate"
  ```

### 옵션 그룹 및 파라미터 그룹을 DB 인스턴스와 연결
<a name="SSIS.Apply"></a>

SSIS 옵션 그룹 및 파라미터 그룹을 DB 인스턴스와 연결하려면 AWS Management Console 또는 AWS CLI를 사용합니다.

**참고**  
기존 인스턴스를 사용하는 경우 이미 Active Directory 도메인과 AWS Identity and Access Management(IAM) 역할이 연결되어 있어야 합니다. 새 인스턴스를 생성하는 경우 기존 Active Directory 도메인 및 IAM 역할을 지정합니다. 자세한 내용은 [RDS for SQL Server를 사용하여 Active Directory 작업](User.SQLServer.ActiveDirectoryWindowsAuth.md) 섹션을 참조하세요.

#### 콘솔
<a name="SSIS.Apply.Console"></a>

SSIS 활성화를 완료하려면 SSIS 옵션 그룹 및 파라미터 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스와 연결합니다.
+ 새 DB 인스턴스의 경우 인스턴스를 시작할 때 이러한 그룹을 연결합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
+ 기존 DB 인스턴스의 경우 인스턴스를 수정하여 그룹을 연결합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

#### CLI
<a name="SSIS.Apply.CLI"></a>

SSIS 옵션 그룹 및 파라미터 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스와 연결할 수 있습니다.

**SSIS 옵션 그룹 및 파라미터 그룹을 사용하여 인스턴스를 생성하려면**
+ 옵션 그룹을 생성할 때 사용한 것과 동일한 DB 엔진 유형과 메이저 버전을 지정합니다.  
**Example**  

  대상 LinuxmacOS, 또는Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssisinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name ssis-se-2016 \
      --db-parameter-group-name ssis-sqlserver-se-13
  ```

  Windows의 경우:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssisinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name ssis-se-2016 ^
      --db-parameter-group-name ssis-sqlserver-se-13
  ```

**인스턴스를 수정하고 SSIS 옵션 그룹 및 파라미터 그룹을 연결하려면**
+ 다음 명령 중 하나를 실행합니다.  
**Example**  

  대상 LinuxmacOS, 또는Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssisinstance \
      --option-group-name ssis-se-2016 \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --apply-immediately
  ```

  Windows의 경우:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssisinstance ^
      --option-group-name ssis-se-2016 ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --apply-immediately
  ```

### S3 통합 활성화
<a name="SSIS.EnableS3"></a>

배포를 위해 SSIS 프로젝트(.ispac) 파일을 호스트에 다운로드하려면 S3 파일 통합을 사용합니다. 자세한 내용은 [Amazon RDS for SQL Server DB 인스턴스와 Amazon S3 통합](User.SQLServer.Options.S3-integration.md) 섹션을 참조하세요.

# SSISDB에 대한 관리 권한
<a name="SSIS.Permissions"></a>

SSIS 옵션을 사용하여 인스턴스를 생성하거나 수정하면 마스터 사용자에게 ssis\$1admin 및 ssis\$1logreader 역할이 부여된 SSISDB 데이터베이스가 생성됩니다. 마스터 사용자는 SSISDB에 대해 다음 권한을 가집니다.
+ ssis\$1admin 역할 변경
+ ssis\$1logreader 역할 변경
+ 모든 사용자 변경

마스터 사용자는 SQL 인증 사용자이므로 마스터 사용자를 사용하여 SSIS 패키지를 실행할 수 없습니다. 마스터 사용자는 이러한 권한을 사용하여 새 SSISDB 사용자를 생성하고 이를 ssis\$1admin 및 ssis\$1logreader 역할에 추가할 수 있습니다. 이렇게 하면 SSIS 사용을 위해 도메인 사용자에게 액세스 권한을 부여하는 데 유용합니다.

## SSIS용 Windows 인증 사용자 설정
<a name="SSIS.Use.Auth"></a>

마스터 사용자가 다음 코드 예제를 사용하여 SSISDB에서 Windows 인증 로그인을 설정하고 필요한 절차에 대한 권한을 부여할 수 있습니다. 이렇게 하면 도메인 사용자에게 SSIS 패키지를 배포 및 실행하고, S3 파일 전송 프로시저를 사용하고, 자격 증명을 만들고, SQL Server 에이전트 프록시를 사용할 수 있는 권한이 부여됩니다. 자세한 내용은 Microsoft 설명서의 [자격 증명(데이터베이스 엔진)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) 및 [SQL Server 에이전트 프록시 생성](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15)을 참조하십시오.

**참고**  
필요에 따라 Windows 인증 사용자에게 다음 사용 권한 중 일부 또는 모두를 부여할 수 있습니다.

**Example**  

```
-- Create a server-level SQL login for the domain user, if it doesn't already exist
USE [master]
GO
CREATE LOGIN [mydomain\user_name] FROM WINDOWS
GO						
						
-- Create a database-level account for the domain user, if it doesn't already exist						
USE [SSISDB]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]

-- Add SSIS role membership to the domain user
ALTER ROLE [ssis_admin] ADD MEMBER [mydomain\user_name]
ALTER ROLE [ssis_logreader] ADD MEMBER [mydomain\user_name]
GO

-- Add MSDB role membership to the domain user
USE [msdb]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]

-- Grant MSDB stored procedure privileges to the domain user
GRANT EXEC ON msdb.dbo.rds_msbi_task TO [mydomain\user_name] with grant option
GRANT SELECT ON msdb.dbo.rds_fn_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_cancel_task TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_download_from_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_upload_to_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_delete_from_filesystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_gather_file_details TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_add_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_update_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_grant_login_to_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_revoke_login_from_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_delete_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_login_for_proxy to [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_proxy_for_subsystem TO [mydomain\user_name]  with grant option
GRANT EXEC ON msdb.dbo.rds_sqlagent_proxy TO [mydomain\user_name] WITH GRANT OPTION


-- Add the SQLAgentUserRole privilege to the domain user
USE [msdb]
GO
ALTER ROLE [SQLAgentUserRole] ADD MEMBER [mydomain\user_name]
GO

-- Grant the ALTER ANY CREDENTIAL privilege to the domain user
USE [master]
GO
GRANT ALTER ANY CREDENTIAL TO [mydomain\user_name]
GO
```

# SSIS 프로젝트 배포
<a name="SSIS.Deploy"></a>

RDS에서는 SQL Server Management Studio(SSMS) 또는 SSIS 프로시저를 사용하여 SSIS 프로젝트를 직접 배포할 수 없습니다. Amazon S3에서 프로젝트 파일을 다운로드한 다음 배포하려면 RDS 저장 프로시저를 사용합니다.

저장 프로시저를 실행하려면 저장 프로시저를 실행할 권한을 부여한 사용자로 로그인합니다. 자세한 내용은 [SSIS용 Windows 인증 사용자 설정](SSIS.Permissions.md#SSIS.Use.Auth) 섹션을 참조하세요.

**SSIS 프로젝트를 배포하려면**

1. 프로젝트(.ispac) 파일을 다운로드합니다.

   ```
   exec msdb.dbo.rds_download_from_s3
   @s3_arn_of_file='arn:aws:s3:::bucket_name/ssisproject.ispac',
   @rds_file_path='D:\S3\ssisproject.ispac',
   @overwrite_file=1;
   ```

1. 다음 사항을 확인하여 배포 작업을 제출합니다.
   + 폴더는 SSIS 카탈로그에 있습니다.
   + 프로젝트 이름은 SSIS 프로젝트를 개발하는 동안 사용한 프로젝트 이름과 일치합니다.

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSIS_DEPLOY_PROJECT',
   @folder_name='DEMO',
   @project_name='ssisproject',
   @file_path='D:\S3\ssisproject.ispac';
   ```

# 배포 작업의 상태 모니터링
<a name="SSIS.Monitor"></a>

배포 작업의 상태를 추적하려면 `rds_fn_task_status` 함수를 호출합니다. 두 가지 파라미터가 필요합니다. 첫 번째 파라미터는 SSIS에 적용되지 않기 때문에 항상 `NULL`이어야 합니다. 두 번째 파라미터는 작업 ID를 수락합니다.

모든 작업 목록을 보려면 다음 예와 같이 첫 번째 파라미터를 `NULL`로, 두 번째 파라미터를 `0`으로 설정하십시오.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

특정 작업을 수행하려면 다음 예와 같이 첫 번째 파라미터를 `NULL`로, 두 번째 파라미터를 작업 ID로 설정하십시오.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

`rds_fn_task_status` 함수는 다음 정보를 반환합니다.


| 출력 파라미터 | 설명 | 
| --- | --- | 
| `task_id` | 작업의 ID입니다. | 
| `task_type` | `SSIS_DEPLOY_PROJECT` | 
| `database_name` | SSIS 작업에는 적용되지 않습니다. | 
| `% complete` | 백분율로 나타낸 작업의 진행률입니다. | 
| `duration (mins)` | 작업에 소요된 시간입니다(분). | 
| `lifecycle` |  작업의 상태입니다. 가능한 상태는 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/SSIS.Monitor.html)  | 
| `task_info` | 작업에 대한 추가 정보입니다. 처리 중에 오류가 발생하면 이 열에 오류 정보가 포함됩니다. | 
| `last_updated` | 작업 상태를 마지막으로 업데이트한 날짜와 시간입니다. | 
| `created_at` | 작업을 생성한 날짜와 시간입니다. | 
| `S3_object_arn` |  SSIS 작업에는 적용되지 않습니다.  | 
| `overwrite_S3_backup_file` | SSIS 작업에는 적용되지 않습니다. | 
| `KMS_master_key_arn` |  SSIS 작업에는 적용되지 않습니다.  | 
| `filepath` |  SSIS 작업에는 적용되지 않습니다.  | 
| `overwrite_file` |  SSIS 작업에는 적용되지 않습니다.  | 
| `task_metadata` | SSIS 작업과 관련된 메타데이터입니다. | 

# SSIS 사용
<a name="SSIS.Use"></a>

SSIS 프로젝트를 SSIS 카탈로그에 배포한 후 SSMS에서 직접 패키지를 실행하거나 SQL Server 에이전트를 사용하여 예약할 수 있습니다. SSIS 패키지를 실행하려면 Windows 인증 로그인을 사용해야 합니다. 자세한 내용은 [SSIS용 Windows 인증 사용자 설정](SSIS.Permissions.md#SSIS.Use.Auth) 섹션을 참조하세요.

**Topics**
+ [

## SSIS 프로젝트에 대한 데이터베이스 연결 관리자 설정
](#SSIS.Use.ConnMgrs)
+ [

## SSIS 프록시 생성
](#SSIS.Use.Proxy)
+ [

## SQL Server 에이전트를 사용하여 SSIS 패키지 예약
](#SSIS.Use.Schedule)
+ [

## 프록시에서 SSIS 액세스 취소
](#SSIS.Use.Revoke)

## SSIS 프로젝트에 대한 데이터베이스 연결 관리자 설정
<a name="SSIS.Use.ConnMgrs"></a>

연결 관리자를 사용하는 경우 다음과 같은 유형의 인증을 사용할 수 있습니다.
+ AWS 관리형 Active Directory를 사용하는 로컬 데이터베이스 연결의 경우 SQL 인증 또는 Windows 인증을 사용할 수 있습니다. Windows 인증의 경우 연결 문자열의 서버 이름으로 `DB_instance_name.fully_qualified_domain_name`을 사용합니다.

  예를 들어 `myssisinstance.corp-ad.example.com`입니다. 여기서 `myssisinstance`는 DB 인스턴스 이름이고 `corp-ad.example.com`은 정규화된 도메인 이름입니다.
+ 원격 연결의 경우 항상 SQL 인증을 사용합니다.
+ 자체 관리형 Active Directory를 사용하는 로컬 데이터베이스 연결의 경우 SQL 인증 또는 Windows 인증을 사용할 수 있습니다. Windows 인증의 경우 연결 문자열의 서버 이름으로 `.` 또는 `LocalHost`를 사용합니다.

## SSIS 프록시 생성
<a name="SSIS.Use.Proxy"></a>

SQL Server 에이전트를 사용하여 SSIS 패키지를 예약하려면 SSIS 자격 증명과 SSIS 프록시를 생성합니다. Windows 인증 사용자로 다음 절차를 실행합니다.

**SSIS 자격 증명을 생성하려면**
+ 프록시에 대한 자격 증명을 생성합니다. 이렇게 하려면 SSMS 또는 다음 SQL 문을 사용하면 됩니다.

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSIS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**참고**  
`IDENTITY`는 도메인 인증 로그인이어야 합니다. `mysecret`를 도메인 인증 로그인에 대한 암호로 바꿉니다.  
SSISDB 기본 호스트가 변경될 때마다 새 호스트가 액세스할 수 있도록 SSIS 프록시 자격 증명을 변경합니다.

**SSIS 프록시를 생성하려면**

1. 다음 SQL 문을 사용하여 프록시를 생성합니다.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSIS_Proxy',@credential_name=N'SSIS_Credential',@description=N''
   GO
   ```

1. 다음 SQL 문을 사용하여 프록시에 대한 액세스 권한을 다른 사용자에게 부여합니다.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSIS_Proxy',@login_name=N'mydomain\user_name'
   GO
   ```

1. 다음 SQL 문을 사용하여 SSIS 하위 시스템에 프록시에 대한 액세스 권한을 부여합니다.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

**프록시 및 프록시의 부여를 보려면**

1. 다음 SQL 문을 사용하여 프록시의 피부여자를 확인합니다.

   ```
   USE [msdb]
   GO
   EXEC sp_help_proxy
   GO
   ```

1. 다음 SQL 문을 사용하여 하위 시스템 부여를 확인합니다.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_enum_proxy_for_subsystem
   GO
   ```

## SQL Server 에이전트를 사용하여 SSIS 패키지 예약
<a name="SSIS.Use.Schedule"></a>

자격 증명 및 프록시를 생성하고 SSIS에 프록시에 대한 액세스 권한을 부여한 후 SSIS 패키지를 예약하는 SQL Server 에이전트 작업을 생성할 수 있습니다.

**SSIS 패키지를 예약하려면**
+ SSMS 또는 T-SQL을 사용하여 SQL Server 에이전트 작업을 생성할 수 있습니다. 다음 예제에서는 T-SQL을 사용합니다.

  ```
  USE [msdb]
  GO
  DECLARE @jobId BINARY(16)
  EXEC msdb.dbo.sp_add_job @job_name=N'MYSSISJob',
  @enabled=1,
  @notify_level_eventlog=0,
  @notify_level_email=2,
  @notify_level_page=2,
  @delete_level=0,
  @category_name=N'[Uncategorized (Local)]',
  @job_id = @jobId OUTPUT
  GO
  EXEC msdb.dbo.sp_add_jobserver @job_name=N'MYSSISJob',@server_name=N'(local)'
  GO
  EXEC msdb.dbo.sp_add_jobstep @job_name=N'MYSSISJob',@step_name=N'ExecuteSSISPackage',
  @step_id=1,
  @cmdexec_success_code=0,
  @on_success_action=1,
  @on_fail_action=2,
  @retry_attempts=0,
  @retry_interval=0,
  @os_run_priority=0,
  @subsystem=N'SSIS',
  @command=N'/ISSERVER "\"\SSISDB\MySSISFolder\MySSISProject\MySSISPackage.dtsx\"" /SERVER "\"my-rds-ssis-instance.corp-ad.company.com/\"" 
  /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E',
  @database_name=N'master',
  @flags=0,
  @proxy_name=N'SSIS_Proxy'
  GO
  ```

## 프록시에서 SSIS 액세스 취소
<a name="SSIS.Use.Revoke"></a>

다음 저장 프로시저를 사용하여 SSIS 하위 시스템에 대한 액세스를 취소하고 SSIS 프록시를 삭제할 수 있습니다.

**액세스를 취소하고 프록시를 삭제하려면**

1. 하위 시스템 액세스를 취소합니다.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

1. 프록시에 대한 부여를 취소합니다.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSIS_Proxy',@name=N'mydomain\user_name'
   GO
   ```

1. 프록시를 삭제합니다.

   ```
   USE [msdb]
   GO
   EXEC dbo.sp_delete_proxy @proxy_name = N'SSIS_Proxy'
   GO
   ```

# SSIS 데이터베이스 비활성화 및 삭제
<a name="SSIS.DisableDrop"></a>

다음 단계를 사용하여 SSIS 데이터베이스를 비활성화하거나 삭제합니다.

**Topics**
+ [

## SSIS 비활성화
](#SSIS.Disable)
+ [

## SSISDB 데이터베이스 삭제
](#SSIS.Drop)

## SSIS 비활성화
<a name="SSIS.Disable"></a>

SSIS를 비활성화하려면 해당 옵션 그룹에서 `SSIS` 옵션을 제거합니다.

**중요**  
이 옵션을 제거해도 SSISDB 데이터베이스가 삭제되지 않으므로 SSIS 프로젝트 손실 없이 해당 옵션을 안전하게 제거할 수 있습니다.  
제거 후 `SSIS` 옵션을 다시 활성화하여 이전에 SSIS 카탈로그에 배포된 SSIS 프로젝트를 다시 사용할 수 있습니다.

### 콘솔
<a name="SSIS.Disable.Console"></a>

다음 절차에서는 `SSIS` 옵션을 제거합니다.

**옵션 그룹에서 SSIS 옵션을 제거하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **옵션 그룹**을 선택합니다.

1. `SSIS` 옵션이 있는 옵션 그룹을 선택합니다(이전 예제의 경우 `ssis-se-2016`).

1. **옵션 삭제**를 선택합니다.

1. **옵션 삭제**에서 **삭제할 옵션**에 **SSIS**를 선택합니다.

1. **즉시 적용**에서 옵션을 즉시 삭제하려면 **예**를 선택하고 다음 유지 관리 기간에 삭제하려면 **아니오**를 선택합니다.

1. **Delete**(삭제)를 선택합니다.

### CLI
<a name="SSIS.Disable.CLI"></a>

다음 절차에서는 `SSIS` 옵션을 제거합니다.

**옵션 그룹에서 SSIS 옵션을 제거하려면**
+ 다음 명령 중 하나를 실행합니다.  
**Example**  

  대상 LinuxmacOS, 또는Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssis-se-2016 \
      --options SSIS \
      --apply-immediately
  ```

  Windows의 경우:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssis-se-2016 ^
      --options SSIS ^
      --apply-immediately
  ```

## SSISDB 데이터베이스 삭제
<a name="SSIS.Drop"></a>

SSIS 옵션을 제거한 후 SSISDB 데이터베이스는 삭제되지 않습니다. SSISDB 데이터베이스를 삭제하려면 SSIS 옵션을 제거한 후 `rds_drop_ssis_database` 저장 프로시저를 사용합니다.

**SSIS 데이터베이스를 삭제하려면**
+ 다음 저장 프로시저를 사용합니다.

  ```
  USE [msdb]
  GO
  EXEC dbo.rds_drop_ssis_database
  GO
  ```

SSISDB 데이터베이스를 삭제한 후 SSIS 옵션을 다시 활성화하면 새 SSISDB 카탈로그를 얻을 수 있습니다.