

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# RDS for SQL Server 中的 Microsoft Distributed Transaction Coordinator 支援
<a name="Appendix.SQLServer.Options.MSDTC"></a>

*分散式交易*是涉及兩個或多個網路主機的資料庫交易。RDS for SQL Server 支援主機之間的分散式交易，其中單一主機可以是下列其中一項：
+ RDS for SQL Server 資料庫執行個體
+ 內部部署 SQL Server 主機
+ 已安裝 SQL Server 的 Amazon EC2 主機
+ 任何其他具有支援分散式交易之資料庫引擎的 EC2 主機或 RDS 資料庫執行個體

在 RDS 中，自 SQL Server 2012 (11.00.5058.0.v1 版及更新版本) 開始，RDS for SQL Server 的所有版本都支援分散式交易。支援是使用 Microsoft Distributed Transaction Coordinator (MSDTC) 提供。如需 MSDTC 的深入資訊，請參閱 Microsoft 文件中的[分散式交易協調器](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms684146(v=vs.85))。

**Contents**
+ [限制](#Appendix.SQLServer.Options.MSDTC.Limitations)
+ [啟用 MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md)
  + [建立 MSDTC 的選項群組](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.OptionGroup)
  + [將 MSDTC 選項新增至選項群組](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Add)
  + [建立 MSDTC 的參數群組](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.CreateParamGroup)
  + [修改 MSDTC 的參數](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)
  + [將選項群組和參數群組與資料庫執行個體建立關聯](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.Apply)
  + [修改 MSDTC 選項](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Modify)
+ [使用交易](#Appendix.SQLServer.Options.MSDTC.Using)
  + [使用分散式交易](#Appendix.SQLServer.Options.MSDTC.UsingXA)
  + [使用 XA 交易](#MSDTC.XA)
  + [使用交易追蹤](#MSDTC.Tracing)
+ [停用 MSDTC](Appendix.SQLServer.Options.MSDTC.Disable.md)
+ [對 RDS for SQL Server 的 MSDTC 進行故障診斷](Appendix.SQLServer.Options.MSDTC.Troubleshooting.md)

## 限制
<a name="Appendix.SQLServer.Options.MSDTC.Limitations"></a>

在 RDS for SQL Server 上使用 MSDTC 時適用下列限制：
+ 使用 SQL Server 資料庫鏡像的執行個體不支援 MSDTC。如需詳細資訊，請參閱[交易 - 可用性群組和資料庫鏡像](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring?view=sql-server-ver15#non-support-for-distributed-transactions)。
+ `in-doubt xact resolution` 參數必須設為 1 或 2。如需詳細資訊，請參閱[修改 MSDTC 的參數](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)。
+ MSDTC 要求所有參與分散式交易的主機皆可使用其主機名稱進行解析。RDS 會自動為加入網域的執行個體維護此功能。不過，對於獨立執行個體，請務必手動設定 DNS 伺服器。
+ SQL Server 2017 14.00.3223.3 版和更新版本以及 SQL Server 2019 支援 Java Database Connectivity (JDBC) XA 交易。
+ 在 RDS 執行個體上不支援依存於用戶端動態連結程式庫 (DLL) 的分散式交易。
+ 不支援使用自訂 XA 動態連結程式庫。

# 啟用 MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Enabling"></a>

請使用下列程序為您的資料庫執行個體啟用 MSDTC：

1. 建立新的選項群組或選擇現有的選項群組。

1. 將 `MSDTC` 選項新增至選項群組。

1. 建立新參數群組，或選擇現有參數群組。

1. 修改參數群組，將 `in-doubt xact resolution` 參數設定為 1 或 2。

1. 將選項群組和參數群組與資料庫執行個體建立關聯。

## 建立 MSDTC 的選項群組
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

使用AWS 管理主控台或 AWS CLI 來建立對應至 SQL Server 引擎和資料庫執行個體版本的選項群組。

**注意**  
如果現有的選項群組適用於正確的 SQL Server 引擎和版本，則也可以使用。

### 主控台
<a name="OptionGroup.MSDTC.Console"></a>

下列程序會建立 SQL Server Standard Edition 2016 的選項群組。

**建立選項群組**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇**建立群組**。

1. 在 **Create option group (建立選項群組)** 窗格中，執行下列動作：

   1. 在 **Name** (名稱) 中，輸入您 AWS 帳戶中的唯一選項群組名稱，例如 **msdtc-se-2016**。名稱僅可包含字母、數字與連字號。

   1. 對於 **Description (描述)**，請輸入選項群組的簡短描述，例如 **MSDTC option group for SQL Server SE 2016**。用於顯示用途的說明。

   1. 對於 **Engine (引擎)**，請選擇 **sqlserver-se**。

   1. 對於 **Major engine version (主要引擎版本)**，請選擇 **13.00**。

1. 選擇**建立**。

### 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` 選項加入至選項群組。

下列選項設定是必要的：
+ **Port (連接埠)** – 您用來存取 MSDTC 的連接埠。允許的數值是 1150–49151，但不包括 1234、1434、3260、3343、3389 和 47001。預設值為 5000。

  確定您要使用的連接埠已在防火牆規則中啟用。此外，請確定在與資料庫執行個體相關聯的安全群組的傳入和傳出規則中已啟用此連接埠。如需更多詳細資訊，請參閱 [無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。
+ **Security groups** (安全群組) – RDS 資料庫執行個體的 VPC 或安全群組成員資格。
+ **Authentication (身分驗證類型)** – 主機之間的身分驗證模式。支援下列身分驗證類型：
  + 相互驗證 – RDS 執行個體使用整合式驗證彼此相互驗證。如果選取此選項，與此選項群組相關聯的所有執行個體都必須加入網域。
  + 無 – 主機之間不執行身分驗證。我們不建議您生產環境中使用此模式。
+ **交易日誌 大小** – MSDTC 交易日誌的大小。允許的數值是 4–1024 MB。預設大小為 4 MB。

下列選項設定是選擇性的：
+ **Enable inbound connections (啟用傳入連線)** – 是否允許對與此選項群組相關聯的執行個體進行傳入 MSDTC 連線。
+ **Enable outbound connections (啟用輸出連線)** – 是否允許從此選項群組相關聯的執行個體進行傳出 MSDTC 連線。
+ **Enable XA (啟用 XA)** – 是否允許 XA 交易。如需 XA 通訊協定的詳細資訊，請參閱 [XA 規格](https://publications.opengroup.org/c193)。
+ **Enable SNA LU (啟用 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 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您剛建立的選項群組。

1. 選擇 **Add option (新增選項)**。

1. 在 **Option details (選項詳細資訊)** 下，選擇 **MSDTC** 做為 **Option name (選項名稱)**。

1. 在 **Options settings (選項設定)** 下：

   1. 針對 **Port (連接埠)**，輸入存取 MSDTC 的連接埠號碼。預設值為 **5000**。

   1. 針對 **Security groups (安全群組)**，選擇要與選項產生關聯的 VPC 安全群組。

   1. 在 **Authentication type (身分驗證類型)** 中，選擇 **Mutual (相互)** 或 **None (無)**。

   1. 針對 **Transaction log size (交易日誌大小)**，輸入 4–1024 之間的值。預設值為 **4**。

1. 在 **Additional configuration (其他設定)** 下，請執行下列動作：

   1. 針對 **Connections (連線)**，視需要選擇 **Enable inbound connections (啟用傳入連線)** 和 **Enable outbound connections (啟用傳出連線)**。

   1. 針對 **Allowed protocols (允許的通訊協定)**，視需要選擇 **Enable XA (啟用 XA)** 和 **Enable SNA LU (啟用 SNA LU)**。

1. 在 **Scheduling (排程)** 下，選擇要立即新增選項或是在下一個維護時段新增選項。

1. 選擇 **Add option (新增選項)**。

   若要新增此選項，不需要重新開機。

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

為對應到 SQL Server 版本和資料庫執行個體版本的 `in-doubt xact resolution` 參數建立或修改參數群組。

### 主控台
<a name="CreateParamGroup.MSDTC.Console"></a>

下列範例會建立 SQL Server Standard Edition 2016 的參數群組。

**建立參數群組**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 選擇 **Create parameter group (建立參數群組)**。

1. 在 **Create parameter group (建立參數群組)** 窗格中執行下列動作：

   1. 對於 **Parameter group family (參數群組家族)**，請選擇 **sqlserver-se-13.0**。

   1. 對於 **Group name (群組名稱)**，輸入參數群組的識別碼，例如 **msdtc-sqlserver-se-13**。

   1. 對於 **Description (說明)**，輸入 **in-doubt xact resolution**。

1. 選擇**建立**。

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

修改參數群組中對應至 SQL Server 版本和資料庫執行個體版本的 `in-doubt xact resolution` 參數。

對於 MSDTC，請將 `in-doubt xact resolution` 參數設定為下列其中一項：
+ `1` – `Presume commit`。任何有疑問的 MSDTC 交易都假設已經遞交。
+ `2` – `Presume abort`。任何有疑問的 MSDTC 交易都假設已停止。

如需詳細資訊，請參閱 Microsoft 文件中的[有疑問的 xact 解析伺服器組態選項](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 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 選擇參數群組，例如 **msdtc-sqlserver-se-13**。

1. 在 **Parameters** (參數) 下，篩選 **xact** 的參數清單。

1. 選擇 **in-doubt xact resolution (有疑問的 xact 解析)**。

1. 選擇 **Edit parameters** (編輯參數)。

1. 輸入 **1** 或 **2**。

1. 選擇**儲存變更**。

### 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"
  ```

## 將選項群組和參數群組與資料庫執行個體建立關聯
<a name="MSDTC.Apply"></a>

您可以使用AWS 管理主控台或 AWS CLI，將 MSDTC 選項群組和參數群組與資料庫執行個體產生關聯。

### 主控台
<a name="MSDTC.Apply.Console"></a>

您可以將 MSDTC 選項群組和參數群組與新的或現有的資料庫執行個體產生關聯。
+ 對於新的資料庫執行個體，請在啟動執行個體時將它們相關聯。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 對於現有的資料庫執行個體，請透過修改執行個體來建立關聯。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
**注意**  
如果您使用現有資料庫執行個體，則該執行個體必須已具有與其相關聯的 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 選項群組和參數群組與新的或現有的資料庫執行個體產生關聯。

**注意**  
如果您使用現有已加入網域的資料庫執行個體，則該執行個體必須已具有與其相關聯的 Active Directory 網域和 IAM 角色。如果您建立新執行個體，請指定現有的 Active Directory 網域和 IAM 角色。如需更多詳細資訊，請參閱 [使用具有 RDS for SQL Server 的 AWS 受管 Active Directory](USER_SQLServerWinAuth.md)。

**使用 MSDTC 選項群組和參數群組建立資料庫執行個體**
+ 指定建立選項群組時所使用的相同資料庫引擎類型和主要版本。  
**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
  ```

**修改資料庫執行個體並建立 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 服務。此需求可能會影響執行中的分散式交易。

## 使用交易
<a name="Appendix.SQLServer.Options.MSDTC.Using"></a>

### 使用分散式交易
<a name="Appendix.SQLServer.Options.MSDTC.UsingXA"></a>

在 Amazon RDS for SQL Server 中，您執行分散式交易的方式與在內部部署執行的分散式交易相同：
+ 使用 .NET Framework `System.Transactions` 可升級的交易，透過延遲到有需要時再建立交易，可最佳化分散式交易。

  在這種情況下，升級是自動的，而不需要您進行任何干預。如果交易中只有一個資源管理員，則不會執行任何升級。如需隱含交易範圍的詳細資訊，請參閱 Microsoft 文件中的[使用交易範圍實作隱含交易](https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/implementing-an-implicit-transaction-using-transaction-scope)。

  以下 .NET 實作支援可升級的交易：
  + 自 ADO.NET 2.0 開始，`System.Data.SqlClient` 支援與 SQL Server 進行可升級的交易。如需詳細資訊，請參閱 Microsoft 文件中的[與 SQL Server 的 System.Transactions 整合](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/system-transactions-integration-with-sql-server)。
  + ODP.NET 支援 `System.Transactions`。在 `TransactionsScope` 範圍中對 Oracle 資料庫 11g 版本 1 (11.1 版) 及更新版本開啟的第一個連線會建立本機交易。當開啟第二個連線時，會自動將此交易升級為分散式交易。如需 ODP.NET 中的分散式交易支援的詳細資訊，請參閱 Microsoft 文件中的 [Microsoft Distributed Transaction Coordinator 整合](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/ntmts/using-mts-with-oracledb.html) 。
+ 使用 `BEGIN DISTRIBUTED TRANSACTION` 陳述式。如需詳細資訊，請參閱 Microsoft 文件中的 [BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql) 。

### 使用 XA 交易
<a name="MSDTC.XA"></a>

從 RDS for SQL Server 2017 14.00.3223.3 版開始，您可以使用 JDBC 控制分散式交易。當您在 `MSDTC` 選項中，將 `Enable XA` 選項設定為 `true` 時，RDS 會自動啟用 JDBC 交易，並將 `SqlJDBCXAUser` 角色授與 `guest` 使用者。如此可允許透過 JDBC 執行分佈式交易。如需包含程式碼範例在內的詳細資訊，請參閱 Microsoft 文件中的[認識 XA 交易](https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions)。

### 使用交易追蹤
<a name="MSDTC.Tracing"></a>

RDS 支援控制 MSDTC 交易追蹤，以及從 RDS 資料庫執行個體下載追蹤以進行故障診斷。您可以執行下列 RDS 預存程序來控制交易追蹤工作階段。

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'trace_action',
[@traceall='0|1'],
[@traceaborted='0|1'],
[@tracelong='0|1'];
```

以下是必要參數：
+ `trace_action` – 追蹤動作。其可能是 `START`、`STOP` 或 `STATUS`。

下列是選用參數：
+ `@traceall` – 設定為 1 可追蹤所有分散式交易。預設為 0。
+ `@traceaborted` – 設定為 1 可追蹤已取消的分散式交易。預設為 0。
+ `@tracelong` – 設定為 1 可追蹤長時間執行的分散式交易。預設為 0。

**Example 開始追蹤動作**  
若要開始新的交易追蹤工作階段，請執行下列範例陳述式。  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'START',
@traceall='0',
@traceaborted='1',
@tracelong='1';
```
一次只能使用一個交易追蹤工作階段。如果在追蹤工作階段作用中時發出新的追蹤工作階段 `START` 命令，則會傳回錯誤，且使用中的追蹤工作階段會維持不變。

**Example 停止追蹤動作**  
若要停止交易追蹤工作階段，請執行下列陳述式。  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
```
此陳述式會停止作用中的交易追蹤工作階段，並將交易追蹤資料儲存至 RDS 資料庫執行個體上的日誌目錄。輸出的第一列包含整體結果，後續幾行指出該操作的詳細資訊。  
以下是成功停止追蹤工作階段的範例。  

```
OK: Trace session has been successfully stopped.
Setting log file to: D:\rdsdbdata\MSDTC\Trace\dtctrace.log
Examining D:\rdsdbdata\MSDTC\Trace\msdtctr.mof for message formats,  8 found.
Searching for TMF files on path: (null)
Logfile D:\rdsdbdata\MSDTC\Trace\dtctrace.log:
 OS version    10.0.14393  (Currently running on 6.2.9200)
 Start Time    <timestamp>
 End Time      <timestamp>
 Timezone is   @tzres.dll,-932 (Bias is 0mins)
 BufferSize            16384 B
 Maximum File Size     10 MB
 Buffers  Written      Not set (Logger may not have been stopped).
 Logger Mode Settings (11000002) ( circular paged
 ProcessorCount         1 
Processing completed   Buffers: 1, Events: 3, EventsLost: 0 :: Format Errors: 0, Unknowns: 3
Event traces dumped to d:\rdsdbdata\Log\msdtc_<timestamp>.log
```
您可以使用詳細資訊來查詢產生之日誌檔案的名稱。如需從 RDS 資料庫執行個體下載日誌檔案的詳細資訊，請參閱 [監控 Amazon RDS 日誌檔案](USER_LogAccess.md)。  
追蹤工作階段記錄會在執行個體上保留 35 天。系統會自動刪除任何較舊的追蹤工作階段日誌。

**Example 狀態追蹤動作**  
若要追蹤交易追蹤工作階段的狀態，請執行下列陳述式。  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STATUS'
```
此陳述式會將下列項目輸出為結果集不同的列。  

```
OK
SessionStatus: <Started|Stopped>
TraceAll: <True|False>
TraceAborted: <True|False>
TraceLongLived: <True|False>
```
第一行指出該操作的整體結果：`OK` 或 `ERROR`，加上詳細資訊 (如果適用)。後續各行指出有關追蹤工作階段狀態的詳細資訊：  
+ `SessionStatus` 可為下列其中之一：
  + `Started` 如果追蹤工作階段正在執行中。
  + `Stopped` 如果沒有追蹤工作階段正在執行中。
+ 追蹤工作階段旗標可以是 `True` 或 `False`，取決於其在 `START` 命令中的設定方式。

# 停用 MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Disable"></a>

若要停用 SSAS，請將 `MSDTC` 選項從其選項群組中移除。

## 主控台
<a name="Options.MSDTC.Disable.Console"></a>

**將 MSDTC 選項從其選項群組中移除**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇具有 `MSDTC` 選項的選項群組 (上述範例中的 `msdtc-se-2016`)。

1. 選擇 **Delete option (刪除選項)**。

1. 在 **Deletion options (刪除選項)** 下，為 **Options to delete (要刪除的選項)** 選擇 **MSDTC**。

1. 在 **Apply immediately (立即套用)** 下，選擇 **Yes (是)** 立即刪除選項，或選擇 **No (否)** 在下一個維護時段將其刪除。

1. 選擇 **刪除**。

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

**將 MSDTC 選項從其選項群組中移除**
+ 請使用下列其中一個命令。  
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws rds remove-option-from-option-group \
      --option-group-name msdtc-se-2016 \
      --options MSDTC \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name msdtc-se-2016 ^
      --options MSDTC ^
      --apply-immediately
  ```

# 對 RDS for SQL Server 的 MSDTC 進行故障診斷
<a name="Appendix.SQLServer.Options.MSDTC.Troubleshooting"></a>

在某些情況下，您可能無法在用戶端電腦上執行的 MSDTC 與 RDS for SQL Server 資料庫執行個體上執行的 MSDTC 服務之間建立連線。若是如此，請確定下列事項：
+ 與資料庫執行個體相關聯之安全群組的傳入規則已正確設定。如需更多詳細資訊，請參閱 [無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。
+ 您的用戶端電腦設定正確。
+ 您的用戶端電腦上已啟用 MSDTC 防火牆規則。

**設定用戶端電腦**

1. 開啟 **Component Services (元件服務)**。

   或者，在 **Server Manager (伺服器管理員)** 中，選擇 **Tools (工具)**，然後選擇 **Component Services (元件服務)**。

1. 展開 **Component Services (元件服務)**，展開 **Computers (電腦)**，展開 **My Computer (我的電腦)**，然後展開 **分散式交易協調器**。

1. 開啟 **Local DTC (本機 DTC)** 的內容 (按右鍵) 功能表，然後選擇 **Properties (屬性)**。

1. 選擇 **Security (安全)** 標籤。

1. 選擇下列所有項目：
   + **Network DTC Access (網路 DTC 存取)**
   + **Allow Inbound (允許傳入)**
   + **Allow Outbound (允許傳出)**

1. 請確定已選擇正確的身分驗證模式：
   + **Mutual Authentication Required (需要相互驗證)** – 用戶端電腦與參與分散式交易的其他節點加入相同的網域，或是網域之間已設定信任關係。
   + **No Authentication Required (不需要驗證)** – 所有其他情況。

1. 選擇 **OK (確定)** 以儲存變更。

1. 如果系統提示您重新啟動服務，請選擇 **Yes (是)**。

**啟用 MSDTC 防火牆規則**

1. 開啟 Windows 防火牆，然後選擇 **Advanced settings (進階設定)**。

   開啟 **Server Manager (伺服器管理員)**，選擇 **Tools (工具)**，然後選取 **Windows Firewall with Advanced Security (具有進階安全性的 Windows 防火牆)**。
**注意**  
視您的作業系統而定，Windows 防火牆可能稱為 Windows Defender 防火牆。

1. 在左窗格中選擇 **Inbound Rules (傳入規則)**。

1. 啟用下列防火牆規則 (如果尚未啟用)：
   + **Distributed Transaction Coordinator (RPC)**
   + **Distributed Transaction Coordinator (RPC)-EPMAP**
   + **Distributed Transaction Coordinator (TCP-In)**

1. 關閉 Windows 防火牆。