

# 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 マネジメントコンソール または AWS CLI を使用して、使用する DB インスタンスの SQL Server エンジンおよびバージョンに対応するオプショングループを作成します。

**注記**  
既存のオプショングループが正しい SQL Server エンジンおよびバージョンに対応している場合は、それを使用することもできます。

### コンソール
<a name="OptionGroup.MSDTC.Console"></a>

次の手順では、SQL Server Standard Edition 2016 のオプショングループを作成します。

**オプショングループを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**オプショングループ**] を選択します。

1. **[Create group]** (グループの作成) を選択します。

1. [**オプショングループの作成**] ウィンドウで、次の操作を行います。

   1. [**名前**] に、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**  

  Linux、macOS、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 マネジメントコンソール または AWS CLI を使用して `MSDTC` オプションをオプショングループに追加します。

次のオプション設定が必要です。
+ **ポート** - MSDTC にアクセスするために使用するポート。指定できる値は、1234、1434、3260、3343、3389、47001 を除く、1150～49151 です。デフォルト値は 5000 です。

  使用するポートがファイアウォールルールで有効になっていることを確認します。また、必要に応じて、DB インスタンスに関連付けられているセキュリティグループのインバウンドルールとアウトバウンドルールでこのポートが有効になっていることを確認します。(詳しくは、「[Amazon RDS DB インスタンスに接続できない](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)」を参照してください。) 
+ **セキュリティグループ** - RDS DB インスタンスの VPC セキュリティグループのメンバーシップ。
+ **認証タイプ** - ホスト間の認証モード。次の認証タイプがサポートされています。
  + 相互 - RDS インスタンスは、統合認証を使用して相互に認証されます。このオプションを選択した場合、このオプショングループに関連付けられているすべてのインスタンスがドメインに参加している必要があります。
  + なし - ホスト間での認証は実行されません。本稼働環境でこのモードを使用することは推奨されていません。
+ **トランザクションログサイズ** - MSDTC トランザクションログのサイズ。許容値は、4～1024 MB です。デフォルトサイズは 4 MB です。

次のオプション設定はオプションです。
+ [**インバウンド接続を有効にする**] - このオプショングループに関連付けられているインスタンスへのインバウンド MSDTC 接続を許可するかどうかを指定します。
+ [**アウトバウンド接続を有効にする**] - このオプショングループに関連付けられているインスタンスからのアウトバウンド MSDTC 接続を許可するかどうかを指定します。
+ **XA を有効にする X** - XA トランザクションを許可するかどうかを指定します。XA プロトコルの詳細については、「[XA 仕様](https://publications.opengroup.org/c193)」を参照してください。
+ **SNA LU を有効にする** - SNA LU プロトコルを分散トランザクションに使用できるようにするかどうかを指定します。SNA LU プロトコルのサポートの詳細については、Microsoft ドキュメントの「[Managing IBM CICS LU 6.2 transactions](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85))」を参照してください。

### コンソール
<a name="Options.MSDTC.Add.Console"></a>

**MSDTC オプションを追加するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**オプショングループ**] を選択します。

1. 先ほど作成したオプショングループを選択します。

1. [**オプションの追加**] を選択します。

1. [**オプションの詳細**] で、[**オプション名**] として **MSDTC** を選択します。

1. [**オプション設定**] で、次の操作を行います。

   1. [**ポート**] に、MSDTC にアクセスするためのポート番号を入力します。デフォルトは **5000** です。

   1. **[セキュリティグループ]** で、オプションに関連付ける VPC セキュリティグループを選択します。

   1. [**認証タイプ**] で [**相互**] または [**なし**] を選択します。

   1. [**トランザクションログのサイズ**] に、4～24 の値を入力します。デフォルト値は **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**  

   Linux、macOS、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 マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、**[パラメータグループ]** を選択します。

1. **[パラメータグループの作成]** を選択します。

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**  

  Linux、macOS、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>

DB インスタンスの SQL Server のエディションとバージョンに対応するパラメータグループの `in-doubt xact resolution` パラメータを変更します。

MSDTC の場合、`in-doubt xact resolution` パラメータに次のいずれかの値を設定します。
+ `1` - `Presume commit`。MSDTC の in-doubt トランザクションは、コミットされたものと見なされます。
+ `2` - `Presume abort`。MSDTC の in-doubt トランザクションは、停止されたものと見なされます。

詳細については、Microsoft ドキュメント の「[in-doubt xact resolution server configuration option](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 マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**パラメータグループ**] を選択します。

1. **msdtc-sqlserver-se-13** などのパラメータグループを選択します。

1. [**パラメータ**] で、パラメータのリストを **xact** でフィルタ処理します。

1. **in-doubt xact resolution** を選択します。

1. [**Edit parameters**] を選択します。

1. **1** または **2** を入力します。

1. [**Save changes**] (変更の保存) をクリックします。

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

次の例では、SQL Server Standard Edition 2016 用に作成したパラメータグループを変更します。

**パラメータグループを変更するには**
+ 以下のいずれかのコマンドを使用します。  
**Example**  

  Linux、macOS、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 マネジメントコンソール または AWS CLI を使用すると、MSDTC オプショングループおよびパラメータグループを DB インスタンスに関連付けることができます。

### コンソール
<a name="MSDTC.Apply.Console"></a>

MSDTC オプショングループおよびパラメータグループを新規または既存の 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 Managed Active Directory の操作](USER_SQLServerWinAuth.md)」を参照してください。

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

MSDTC オプショングループおよびパラメータグループを新規または既存の DB インスタンスに関連付けることができます。

**注記**  
既存のドメイン参加済みの DB インスタンスを使用する場合は、このインスタンスに Active Directory ドメインと IAM ロールが既に関連付けられている必要があります。新しいドメイン参加済みのインスタンスを作成する場合は、既存の Active Directory ドメインと IAM ロールを指定します。詳細については、「[RDS for SQL Server による AWS Managed Active Directory の操作](USER_SQLServerWinAuth.md)」を参照してください。

**MSDTC オプショングループおよびパラメータグループを使用して DB インスタンスを作成するには**
+ オプショングループの作成時に使用したものと同じ DB エンジンのタイプとメジャーバージョンを指定します。  
**Example**  

  Linux、macOS、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**  

  Linux、macOS、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 サービスを再起動する必要があります。この要件は、実行中の分散トランザクションに影響を与える可能性があります。