

# MSDTC 활성화
<a name="Appendix.SQLServer.Options.MSDTC.Enabling"></a>

DB 인스턴스에 MSDTC를 활성화하려면 다음 프로세스를 사용합니다.

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

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

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

1. 파라미터 그룹을 수정하여 `in-doubt xact resolution` 파라미터를 1 또는 2로 설정합니다.

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

## MSDTC용 옵션 그룹 생성
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

AWS Management Console 또는 AWS CLI를 사용하여 SQL Server 엔진과 DB 인스턴스 버전에 해당하는 옵션 그룹을 생성합니다.

**참고**  
올바른 SQL Server 엔진 및 버전인 경우 기존 옵션 그룹을 사용할 수도 있습니다.

### 콘솔
<a name="OptionGroup.MSDTC.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 계정 내에서 쉽게 식별할 수 있는 옵션 그룹 이름을 입력합니다(예: **msdtc-se-2016**). 이름은 글자, 숫자 및 하이픈만 사용 가능합니다.

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

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

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

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

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

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

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

  대상 LinuxmacOS, 또는Unix:

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

  Windows의 경우:

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

## 옵션 그룹에 MSDTC 옵션 추가
<a name="Appendix.SQLServer.Options.MSDTC.Add"></a>

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

다음 옵션 설정이 필요합니다.
+ **포트** – MSDTC에 액세스하는 데 사용하는 포트입니다. 허용되는 값은 1150–49151(1234, 1434, 3260, 3343, 3389, 47001 제외)입니다. 기본값은 5000입니다.

  사용하려는 포트가 방화벽 규칙에서 활성화되어 있는지 확인합니다. 또한 필요에 따라 DB 인스턴스와 연결된 보안 그룹의 인바운드 및 아웃바운드 규칙에서 이 포트를 활성화해야 합니다. 자세한 내용은 [Amazon RDS DB 인스턴스에 연결할 수 없음](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting) 단원을 참조하세요.
+ **보안 그룹** – RDS DB 인스턴스에 대한 VPC 보안 그룹 멤버십입니다.
+ **인증 유형** – 호스트 간의 인증 모드입니다. 지원되는 인증 유형은 다음과 같습니다.
  + 상호 – RDS 인스턴스가 통합 인증을 사용하여 상호 인증됩니다. 이 옵션을 선택하는 경우 이 옵션 그룹과 연결된 모든 인스턴스가 도메인에 가입되어 있어야 합니다.
  + 없음 – 호스트 간에 인증이 수행되지 않습니다. 프로덕션 환경에서는 이 모드를 사용하지 않는 것이 좋습니다.
+ **트랜잭션 로그 크기** – MSDTC 트랜잭션 로그의 크기입니다. 허용되는 값은 4–1024MB입니다. 기본 크기는 4MB입니다.

다음 옵션 설정은 선택 사항입니다.
+ **인바운드 연결 활성화** – 이 옵션 그룹과 연결된 인스턴스로의 인바운드 MSDTC 연결을 허용할지 여부를 지정합니다.
+ **아웃바운드 연결 활성화** – 이 옵션 그룹과 연결된 인스턴스로부터의 아웃바운드 MSDTC 연결을 허용할지 여부를 지정합니다.
+ **XA 활성화** – XA 트랜잭션을 허용할지 여부를 지정합니다 . XA 프로토콜에 대한 자세한 내용은 [XA 사양](https://publications.opengroup.org/c193)을 참조하세요.
+ **SNA LU 활성화** – 분산 트랜잭션에 SNA LU 프로토콜을 사용하도록 허용할지 여부를 지정합니다. SNA LU 프로토콜 지원에 대한 자세한 내용은 Microsoft 설명서의 [IBM CICS LU 6.2 트랜잭션 관리](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85))를 참조하세요.

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

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

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

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

1. 방금 생성한 옵션 그룹을 선택합니다.

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

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

1. **옵션 설정**에서 다음을 수행합니다.

   1. **포트**에 MSDTC에 액세스하는 데 사용할 포트 번호를 입력합니다. 기본값은 **5000**입니다.

   1. **보안 그룹**의 경우 옵션과 연결할 VPC 보안 그룹을 선택합니다.

   1. **인증 유형**에서 **상호** 또는 **없음**을 선택합니다.

   1. **트랜잭션 로그 크기**에 4–1024 사이의 값을 입력합니다. 기본값은 **4**입니다.

1. **추가 구성**에서 다음을 수행합니다.

   1. **연결**에서 필요에 따라 **인바운드 연결 활성화** 및 **아웃바운드 연결 활성화**를 선택합니다.

   1. **허용된 프로토콜**에서 필요에 따라 **XA 활성화** 및 **SNA LU 활성화**를 선택합니다.

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

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

   이 옵션을 추가하는 데 재부팅은 필요하지 않습니다.

### CLI
<a name="Options.MSDTC.Add.CLI"></a>

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

1. 다음 필수 파라미터를 사용하여 JSON 파일(예: `msdtc-option.json`)을 생성합니다.

   ```
   {
   "OptionGroupName":"msdtc-se-2016",
   "OptionsToInclude": [
   	{
   	"OptionName":"MSDTC",
   	"Port":5000,
   	"VpcSecurityGroupMemberships":["sg-0abcdef123"],
   	"OptionSettings":[{"Name":"AUTHENTICATION","Value":"MUTUAL"},{"Name":"TRANSACTION_LOG_SIZE","Value":"4"}]
   	}],
   "ApplyImmediately": true
   }
   ```

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

   대상 LinuxmacOS, 또는Unix:

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://msdtc-option.json \
       --apply-immediately
   ```

   Windows의 경우:

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://msdtc-option.json ^
       --apply-immediately
   ```

   재부팅이 필요하지 않습니다.

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

DB 인스턴스의 SQL Server 에디션 및 버전에 해당하는 `in-doubt xact resolution` 파라미터의 파라미터 그룹을 생성하거나 수정합니다.

### 콘솔
<a name="CreateParamGroup.MSDTC.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. **그룹 이름**에 파라미터 그룹의 식별자(예: **msdtc-sqlserver-se-13**)를 입력합니다.

   1. **설명**에 **in-doubt xact resolution**를 입력합니다.

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

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

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

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

  대상 LinuxmacOS, 또는Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name msdtc-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "in-doubt xact resolution"
  ```

  Windows의 경우:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "in-doubt xact resolution"
  ```

## MSDTC에 대한 파라미터 수정
<a name="ModifyParam.MSDTC"></a>

SQL Server 에디션 및 DB 인스턴스의 버전에 해당하는 파라미터 그룹의 `in-doubt xact resolution` 파라미터를 수정합니다.

MSDTC에 대해 `in-doubt xact resolution` 파라미터를 다음 중 하나로 설정합니다.
+ `1` - `Presume commit` 모든 MSDTC 미결 트랜잭션을 커밋된 것으로 가정합니다.
+ `2` - `Presume abort` 모든 MSDTC 미결 트랜잭션을 중지된 것으로 가정합니다.

자세한 내용은 Microsoft 설명서의 [in-doubt xact resolution 서버 구성 옵션](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/in-doubt-xact-resolution-server-configuration-option)을 참조하세요.

### 콘솔
<a name="ModifyParam.MSDTC.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. 파라미터 그룹(예: **msdtc-sqlserver-se-13**)을 선택합니다.

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

1. **in-doubt xact resolution**을 선택합니다.

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

1. **1** 또는 **2**를 입력합니다.

1. **Save changes**(변경 사항 저장)를 선택합니다.

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

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

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

  대상 LinuxmacOS, 또는Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name msdtc-sqlserver-se-13 \
      --parameters "ParameterName='in-doubt xact resolution',ParameterValue=1,ApplyMethod=immediate"
  ```

  Windows의 경우:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --parameters "ParameterName='in-doubt xact resolution',ParameterValue=1,ApplyMethod=immediate"
  ```

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

AWS Management Console 또는 AWS CLI를 사용하여 MSDTC 옵션 그룹 및 파라미터 그룹을 DB 인스턴스와 연결할 수 있습니다.

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

MSDTC 옵션 그룹 및 파라미터 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스와 연결할 수 있습니다.
+ 새 DB 인스턴스의 경우 인스턴스를 시작할 때 이러한 그룹을 연결합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
+ 기존 DB 인스턴스의 경우 인스턴스를 수정하여 그룹을 연결합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.
**참고**  
도메인에 가입된 기존 DB 인스턴스를 사용하는 경우 이미 Active Directory 도메인과 AWS Identity and Access Management(IAM) 역할이 연결되어 있어야 합니다. 도메인에 가입된 새 인스턴스를 생성하는 경우 기존 Active Directory 도메인 및 IAM 역할을 지정합니다. 자세한 내용은 [RDS for SQL Server를 사용하여 AWS 관리형 Active Directory 작업](USER_SQLServerWinAuth.md) 단원을 참조하세요.

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

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

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

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

  대상 LinuxmacOS, 또는Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --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 msdtc-se-2016 \
      --db-parameter-group-name msdtc-sqlserver-se-13
  ```

  Windows의 경우:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --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 msdtc-se-2016 ^
      --db-parameter-group-name msdtc-sqlserver-se-13
  ```

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

  대상 LinuxmacOS, 또는Unix:

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

  Windows의 경우:

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

## MSDTC 옵션 수정
<a name="Appendix.SQLServer.Options.MSDTC.Modify"></a>

`MSDTC` 옵션을 활성화한 후 해당 설정을 수정할 수 있습니다. 옵션 설정을 변경하는 방법에 대한 자세한 내용은 [옵션 설정 수정](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption) 단원을 참조하십시오.

**참고**  
MSDTC 옵션 설정을 일부 변경하려면 MSDTC 서비스를 다시 시작해야 합니다. 이 요구 사항은 분산 트랜잭션 실행에 영향을 줄 수 있습니다.