

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Dukungan untuk Microsoft Distributed Transaction Coordinator di RDS for SQL Server
<a name="Appendix.SQLServer.Options.MSDTC"></a>

*Transaksi terdistribusi* adalah transaksi basis data yang melibatkan dua atau beberapa host jaringan. Amazon RDS for SQL Server mendukung transaksi terdistribusi di antara host, dengan satu host dapat menjadi salah satu opsi berikut ini:
+ Instans DB RDS for SQL Server
+ Host SQL Server on-premise
+ Host Amazon EC2 dengan SQL Server diinstal
+ Semua host EC2 atau instans DB RDS lainnya dengan mesin basis data yang mendukung transaksi terdistribusi

Di RDS, dimulai dengan SQL Server 2012 (versi 11.00.5058.0.v1 dan yang lebih baru), semua edisi RDS for SQL Server mendukung transaksi terdistribusi. Dukungan disediakan menggunakan Microsoft Distributed Transaction Coordinator (MSDTC). Untuk informasi mendalam tentang MSDTC, lihat [Distributed Transaction Coordinator](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms684146(v=vs.85)) dalam dokumentasi Microsoft.

**Contents**
+ [Batasan](#Appendix.SQLServer.Options.MSDTC.Limitations)
+ [Mengaktifkan MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md)
  + [Membuat grup opsi untuk MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.OptionGroup)
  + [Menambahkan MSDTC opsi ke grup opsi](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Add)
  + [Membuat grup parameter untuk MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.CreateParamGroup)
  + [Memodifikasi parameter untuk MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)
  + [Mengaitkan grup opsi dan grup parameter dengan instans DB](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.Apply)
  + [Memodifikasi opsi MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Modify)
+ [Menggunakan transaksi](#Appendix.SQLServer.Options.MSDTC.Using)
  + [Menggunakan transaksi terdistribusi](#Appendix.SQLServer.Options.MSDTC.UsingXA)
  + [Menggunakan transaksi XA](#MSDTC.XA)
  + [Menggunakan pelacakan transaksi](#MSDTC.Tracing)
+ [Menonaktifkan MSDTC](Appendix.SQLServer.Options.MSDTC.Disable.md)
+ [Pemecahan Masalah MSDTC untuk Server RDS SQL](Appendix.SQLServer.Options.MSDTC.Troubleshooting.md)

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

Batasan berikut berlaku untuk penggunaan MSDTC di RDS for SQL Server:
+ MSDTC tidak didukung pada instans yang menggunakan SQL Server Database Mirroring. Untuk informasi selengkapnya, lihat [Transactions - availability groups and database mirroring](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).
+ Parameter `in-doubt xact resolution` harus diatur ke 1 atau 2. Untuk informasi selengkapnya, lihat [Memodifikasi parameter untuk MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC).
+ MSDTC mengharuskan semua host yang berpartisipasi dalam transaksi terdistribusi dapat diselesaikan menggunakan nama host-nya. RDS akan otomatis mempertahankan fungsionalitas ini untuk instans yang bergabung dengan domain. Namun, untuk instans mandiri, pastikan Anda mengonfigurasi server DNS secara manual.
+ Transaksi XA Java Database Connectivity (JDBC) didukung untuk SQL Server 2017 versi 14.00.3223.3 dan yang lebih tinggi, serta SQL Server 2019.
+ Transaksi terdistribusi yang bergantung pada pustaka tautan dinamis klien (DLLs) pada instance RDS tidak didukung.
+ Penggunaan pustaka tautan dinamis XA kustom tidak didukung.

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

Gunakan proses berikut MSDTC untuk mengaktifkan instans DB Anda:

1. Buat grup opsi baru, atau pilih grup opsi yang sudah ada.

1. Tambahkan opsi `MSDTC` untuk grup opsi.

1. Buat grup parameter baru, atau pilih grup parameter yang sudah ada.

1. Ubah grup parameter untuk menyetel parameter `in-doubt xact resolution` ke 1 atau 2.

1. Kaitkan grup opsi dan grup parameter dengan instans DB.

## Membuat grup opsi untuk MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

Gunakan Konsol Manajemen AWS atau AWS CLI untuk membuat grup opsi yang sesuai dengan mesin SQL Server dan versi instans DB Anda.

**catatan**  
Anda juga dapat menggunakan grup opsi yang ada jika itu untuk mesin dan versi SQL Server yang benar.

### Konsol
<a name="OptionGroup.MSDTC.Console"></a>

Prosedur berikut membuat grup opsi untuk SQL Server Standard Edition 2016.

**Untuk membuat grup opsi**

1. Masuk ke Konsol Manajemen AWS dan buka RDS konsol Amazon di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Grup opsi**.

1. Pilih **Buat grup**.

1. Di panel **Buat grup opsi**, lakukan hal berikut:

   1. Untuk **Nama**, masukkan nama untuk grup opsi yang unik di dalam AWS akun Anda, seperti**msdtc-se-2016**. Nama tersebut hanya boleh berisi huruf, angka, dan tanda hubung.

   1. Untuk **Deskripsi**, masukkan deskripsi singkat grup opsi, seperti **MSDTC option group for SQL Server SE 2016**. Deskripsi digunakan untuk tampilan. 

   1. Untuk **Mesin**, pilih **sqlserver-se**.

   1. Untuk **Versi mesin utama**, pilih **13.00**.

1. Pilih **Buat**.

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

Contoh berikut membuat grup opsi untuk SQL Server Standard Edition 2016.

**Untuk membuat grup opsi**
+ Gunakan salah satu perintah berikut ini.  
**Example**  

  Untuk Linux, macOS, atau 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"
  ```

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

## Menambahkan MSDTC opsi ke grup opsi
<a name="Appendix.SQLServer.Options.MSDTC.Add"></a>

Selanjutnya, gunakan Konsol Manajemen AWS atau AWS CLI untuk menambahkan `MSDTC` opsi ke grup opsi.

Pengaturan opsi berikut diperlukan:
+ **Port** — Port yang Anda gunakan untuk mengaksesMSDTC. Nilai yang diizinkan adalah 1150–49151 kecuali untuk 1234, 1434, 3260, 3343, 3389, dan 47001. Nilai default-nya adalah 5000.

  Pastikan port yang ingin Anda gunakan diaktifkan dalam aturan firewall Anda. Selain itu, pastikan jika diperlukan bahwa port ini diaktifkan dalam aturan masuk dan keluar untuk grup keamanan yang terkait dengan instans DB Anda. Untuk informasi selengkapnya, lihat [Tidak dapat terhubung ke instans DB Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting). 
+ **Grup keamanan** — Keanggotaan grup VPC keamanan untuk instans RDS DB Anda.
+ **Jenis autentikasi** – Mode autentikasi antara host. Jenis autentikasi berikut ini didukung:
  + Mutual — RDS Instance saling diautentikasi satu sama lain menggunakan otentikasi terintegrasi. Jika opsi ini dipilih, semua instans yang terkait dengan grup opsi ini harus bergabung dengan domain.
  + Tidak Ada – Tidak ada autentikasi yang dilakukan antara host. Kami tidak menyarankan penggunaan mode ini di lingkungan produksi.
+ **Ukuran log transaksi** — Ukuran log MSDTC transaksi. Nilai yang diizinkan adalah 4–1024 MB. Ukuran default-nya adalah 4 MB.

Pengaturan opsi berikut ini bersifat opsional:
+ **Aktifkan koneksi masuk** — Apakah akan mengizinkan MSDTC koneksi masuk ke instance yang terkait dengan grup opsi ini.
+ **Aktifkan koneksi keluar** — Apakah akan mengizinkan MSDTC koneksi keluar dari instance yang terkait dengan grup opsi ini.
+ **Aktifkan XA** – Apakah akan mengizinkan transaksi XA atau tidak. Untuk informasi selengkapnya tentang protokol XA, lihat [spesifikasi XA](https://publications.opengroup.org/c193).
+ **Aktifkan SNA LU** — Apakah akan mengizinkan protokol SNA LU digunakan untuk transaksi terdistribusi. Untuk informasi selengkapnya tentang dukungan protokol SNA LU, lihat [Mengelola transaksi IBM CICS LU 6.2](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85)) dalam dokumentasi Microsoft.

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

**Untuk menambahkan MSDTC opsi**

1. Masuk ke Konsol Manajemen AWS dan buka RDS konsol Amazon di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Grup opsi**.

1. Pilih grup opsi yang baru saja Anda buat.

1. Pilih **Tambah opsi**.

1. Di bawah **Rincian opsi**, pilih **MSDTC****nama Opsi**.

1. Di bagian **Pengaturan opsi**:

   1. Untuk **Port**, masukkan nomor port untuk mengakses. MSDTC Default-nya adalah **5000**.

   1. Untuk **grup Keamanan**, pilih grup VPC keamanan untuk dikaitkan dengan opsi.

   1. Untuk **Jenis autentikasi**, pilih **Timbal Balik** atau **Tidak Ada**.

   1. Untuk **Ukuran log transaksi**, masukkan nilai dari 4–1024. Default-nya adalah **4**.

1. Di bagian **Konfigurasi tambahan**, lakukan tindakan berikut:

   1. Untuk **Koneksi**, sebagaimana dibutuhkan pilih **Aktifkan koneksi masuk** dan **Aktifkan koneksi keluar**.

   1. **Untuk **protokol yang Diizinkan**, sesuai kebutuhan pilih **Aktifkan XA dan Aktifkan** LU. SNA**

1. Di bagian **Penjadwalan**, pilih apakah akan menambahkan opsi langsung atau pada masa pemeliharaan berikutnya.

1. Pilih **Tambah opsi**.

   Boot ulang tidak diperlukan untuk menambahkan opsi ini.

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

**Untuk menambahkan MSDTC opsi**

1. Buat JSON file, misalnya`msdtc-option.json`, dengan parameter yang diperlukan berikut.

   ```
   {
   "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. Tambahkan opsi `MSDTC` ke grup opsi.  
**Example**  

   Untuk Linux, macOS, atau Unix:

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

   Untuk Windows:

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

   Tidak diperlukan boot ulang.

## Membuat grup parameter untuk MSDTC
<a name="MSDTC.CreateParamGroup"></a>

Buat atau modifikasi grup parameter untuk `in-doubt xact resolution` parameter yang sesuai dengan edisi SQL Server dan versi instans DB Anda.

### Konsol
<a name="CreateParamGroup.MSDTC.Console"></a>

Contoh berikut membuat grup parameter untuk SQL Server Standard Edition 2016.

**Untuk membuat grup parameter**

1. Masuk ke Konsol Manajemen AWS dan buka RDS konsol Amazon di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Grup parameter**.

1. Pilih **Buat grup parameter**.

1. Di panel **Buat grup parameter**, lakukan hal berikut:

   1. Untuk **Rangkaian grup parameter**, pilih **sqlserver-se-13.0**.

   1. Untuk **Nama grup**, masukkan pengidentifikasi grup parameter, seperti **msdtc-sqlserver-se-13**.

   1. Untuk **Deskripsi**, masukkan **in-doubt xact resolution**.

1. Pilih **Buat**.

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

Contoh berikut membuat grup parameter untuk SQL Server Standard Edition 2016.

**Untuk membuat grup parameter**
+ Gunakan salah satu perintah berikut.  
**Example**  

  Untuk Linux, macOS, atau 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"
  ```

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

## Memodifikasi parameter untuk MSDTC
<a name="ModifyParam.MSDTC"></a>

Ubah `in-doubt xact resolution` parameter dalam grup parameter yang sesuai dengan edisi SQL Server dan versi instans DB Anda.

UntukMSDTC, atur `in-doubt xact resolution` parameter ke salah satu dari berikut ini:
+ `1`—`Presume commit`. Setiap MSDTC transaksi yang diragukan dianggap telah dilakukan.
+ `2`—`Presume abort`. Setiap MSDTC transaksi yang diragukan dianggap telah berhenti.

Untuk informasi selengkapnya, lihat [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) dalam dokumentasi Microsoft.

### Konsol
<a name="ModifyParam.MSDTC.Console"></a>

Contoh berikut memodifikasi grup parameter yang Anda buat untuk SQL Server Standard Edition 2016.

**Untuk mengubah grup parameter**

1. Masuk ke Konsol Manajemen AWS dan buka RDS konsol Amazon di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Grup parameter**.

1. Pilih grup parameter, seperti **msdtc-sqlserver-se-13**.

1. Di bagian **Parameter**, filter daftar parameter untuk **xact**.

1. Pilih **in-doubt xact resolution**.

1. Pilih **Edit parameter**.

1. Masukkan **1** atau **2**.

1. Pilih **Simpan perubahan**.

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

Contoh berikut memodifikasi grup parameter yang Anda buat untuk SQL Server Standard Edition 2016.

**Untuk mengubah grup parameter**
+ Gunakan salah satu perintah berikut ini.  
**Example**  

  Untuk Linux, macOS, atau 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"
  ```

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

## Mengaitkan grup opsi dan grup parameter dengan instans DB
<a name="MSDTC.Apply"></a>

Anda dapat menggunakan Konsol Manajemen AWS or AWS CLI untuk mengaitkan grup MSDTC opsi dan grup parameter dengan instans DB.

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

Anda dapat mengaitkan grup MSDTC opsi dan grup parameter dengan instans DB baru atau yang sudah ada.
+ Untuk instans DB baru, kaitkan saat Anda meluncurkan instans. Untuk informasi selengkapnya, lihat [Membuat instans DB Amazon RDS](USER_CreateDBInstance.md).
+ Untuk instans DB yang sudah ada, kaitkan dengan memodifikasi instans. Untuk informasi selengkapnya, lihat [Memodifikasi instans DB Amazon RDS](Overview.DBInstance.Modifying.md).
**catatan**  
Jika Anda menggunakan instance DB yang sudah bergabung dengan domain, instans tersebut harus sudah memiliki domain Active Directory dan AWS Identity and Access Management (IAM) peran yang terkait dengannya. Jika Anda membuat instance baru yang bergabung dengan domain, tentukan domain dan peran Direktori Aktif yang ada. IAM Untuk informasi selengkapnya, lihat [Bekerja dengan Direktori Aktif AWS Terkelola dengan RDS untuk SQL Server](USER_SQLServerWinAuth.md).

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

Anda dapat mengaitkan grup MSDTC opsi dan grup parameter dengan instans DB baru atau yang sudah ada.

**catatan**  
Jika Anda menggunakan instans DB yang bergabung dengan domain yang ada, itu harus sudah memiliki domain dan IAM peran Direktori Aktif yang terkait dengannya. Jika Anda membuat instance baru yang bergabung dengan domain, tentukan domain dan peran Direktori Aktif yang ada. IAM Untuk informasi selengkapnya, lihat [Bekerja dengan Direktori Aktif AWS Terkelola dengan RDS untuk SQL Server](USER_SQLServerWinAuth.md).

**Untuk membuat instance DB dengan grup MSDTC opsi dan grup parameter**
+ Tentukan jenis mesin DB dan versi utama yang sama seperti yang Anda gunakan saat membuat grup opsi.  
**Example**  

  Untuk Linux, macOS, atau 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
  ```

  Untuk 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
  ```

**Untuk memodifikasi instance DB dan mengaitkan grup MSDTC opsi dan grup parameter**
+ Gunakan salah satu perintah berikut ini.  
**Example**  

  Untuk Linux, macOS, atau 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
  ```

  Untuk 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
  ```

## Memodifikasi opsi MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Modify"></a>

Setelah mengaktifkan opsi `MSDTC`, Anda dapat mengubah pengaturannya. Untuk informasi cara mengubah pengaturan opsi, lihat [Memodifikasi pengaturan opsi](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

**catatan**  
Beberapa perubahan pada pengaturan MSDTC opsi mengharuskan MSDTC layanan dimulai ulang. Persyaratan ini dapat memengaruhi transaksi terdistribusi yang berjalan.

## Menggunakan transaksi
<a name="Appendix.SQLServer.Options.MSDTC.Using"></a>

### Menggunakan transaksi terdistribusi
<a name="Appendix.SQLServer.Options.MSDTC.UsingXA"></a>

Di Amazon RDS for SQL Server, Anda dapat menjalankan transaksi terdistribusi dengan cara yang sama seperti transaksi terdistribusi yang berjalan on-premise:
+ Menggunakan transaksi yang dapat dipromosikan .NET framework `System.Transactions`, yang mengoptimalkan transaksi terdistribusi dengan menunda pembuatannya hingga diperlukan.

  Dalam hal ini, promosi bersifat otomatis dan tidak mengharuskan Anda untuk melakukan intervensi apa pun. Jika hanya ada satu pengelola sumber daya dalam transaksi, tidak ada promosi yang dilakukan. Untuk informasi selengkapnya tentang cakupan transaksi implisit, lihat [Implementing an implicit transaction using transaction scope](https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/implementing-an-implicit-transaction-using-transaction-scope) dalam dokumentasi Microsoft.

  Transaksi yang dapat dipromosikan didukung dengan implementasi .NET ini:
  + Dimulai dengan ADO.NET 2.0, `System.Data.SqlClient` mendukung transaksi yang dapat dipromosikan dengan SQL Server. Untuk informasi selengkapnya, lihat [System.Transactions integration with SQL Server](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/system-transactions-integration-with-sql-server) dalam dokumentasi Microsoft.
  + ODP.NET mendukung `System.Transactions`. Transaksi lokal dibuat untuk koneksi pertama yang dibuka dalam cakupan `TransactionsScope` ke Oracle Database 11g rilis 1 (versi 11.1) dan yang lebih baru. Ketika koneksi kedua dibuka, transaksi ini akan otomatis dipromosikan menjadi transaksi terdistribusi. Untuk informasi dukungan transaksi terdistribusi di ODP.NET selengkapnya, lihat [Microsoft Distributed Transaction Coordinator integration](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/ntmts/using-mts-with-oracledb.html) dalam dokumentasi Microsoft.
+ Menggunakan pernyataan `BEGIN DISTRIBUTED TRANSACTION`. Untuk informasi selengkapnya, lihat [BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql) dalam dokumentasi Microsoft.

### Menggunakan transaksi XA
<a name="MSDTC.XA"></a>

Mulai dari RDS for SQL Server 2017 versi 14.00.3223.3, Anda dapat mengontrol transaksi terdistribusi menggunakan JDBC. Saat Anda mengatur pengaturan opsi `Enable XA` ke `true` dalam opsi `MSDTC`, RDS akan otomatis mengaktifkan transaksi JDBC dan memberikan peran `SqlJDBCXAUser` tersebut kepada pengguna `guest`. Tindakan ini akan memungkinkan pelaksanaan transaksi terdistribusi melalui JDBC. Untuk informasi selengkapnya, termasuk contoh kode, lihat [Understanding XA transactions](https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions) dalam dokumentasi Microsoft.

### Menggunakan pelacakan transaksi
<a name="MSDTC.Tracing"></a>

RDS mendukung pengendalian jejak transaksi MSDTC dan mengunduhnya dari instans DB RDS untuk memecahkan masalah. Anda dapat mengontrol sesi pelacakan transaksi dengan menjalankan prosedur RDS berikut.

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

Parameter berikut diperlukan:
+ `trace_action` – Tindakan pelacakan. Tindakan tersebut dapat berupa `START`, `STOP`, atau `STATUS`.

Parameter berikut ini bersifat opsional:
+ `@traceall` – Atur ke 1 untuk melacak semua transaksi terdistribusi. Default-nya adalah 0.
+ `@traceaborted` – Atur ke 1 untuk melacak transaksi terdistribusi yang dibatalkan. Default-nya adalah 0.
+ `@tracelong` – Atur ke 1 untuk melacak transaksi terdistribusi yang berlangsung lama. Default-nya adalah 0.

**Example tindakan pelacakan START**  
Untuk memulai sesi pelacakan transaksi baru, jalankan pernyataan contoh berikut.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'START',
@traceall='0',
@traceaborted='1',
@tracelong='1';
```
Hanya satu sesi pelacakan transaksi yang dapat aktif pada satu waktu. Jika perintah sesi pelacakan `START` dikeluarkan saat sesi pelacakan aktif, kesalahan akan dikembalikan dan sesi pelacakan aktif tetap tidak berubah.

**Example tindakan pelacakan STOP**  
Untuk menghentikan sesi pelacakan transaksi, jalankan pernyataan berikut.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
```
Pernyataan ini akan menghentikan sesi pelacakan transaksi aktif dan menyimpan data jejak transaksi ke direktori log di instans DB RDS. Baris pertama output berisi hasil keseluruhan, dan baris berikutnya menunjukkan detail operasi.  
Berikut ini adalah contoh penghentian sesi pelacakan yang berhasil.  

```
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
```
Anda dapat menggunakan informasi terperinci untuk mencari nama file log yang dihasilkan. Untuk informasi selengkapnya tentang pengunduhan file log dari instans DB RDS, lihat [Memantau file RDS Amazon](USER_LogAccess.md).  
Log sesi pelacakan tetap berada di instans selama 35 hari. Semua log sesi pelacakan yang lebih lama akan otomatis dihapus.

**Example tindakan pelacakan STATUS**  
Untuk melacak status sesi pelacakan transaksi, jalankan pernyataan berikut.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STATUS'
```
Pernyataan ini menghasilkan informasi berikut sebagai baris kumpulan hasil yang terpisah.  

```
OK
SessionStatus: <Started|Stopped>
TraceAll: <True|False>
TraceAborted: <True|False>
TraceLongLived: <True|False>
```
Baris pertama menunjukkan hasil keseluruhan dari operasi: `OK` atau `ERROR` beserta detail, jika ada. Baris berikutnya menunjukkan detail status sesi pelacakan:   
+ `SessionStatus` dapat berupa salah satu status berikut:
  + `Started` jika sesi pelacakan berjalan.
  + `Stopped` jika tidak ada sesi pelacakan yang berjalan.
+ Tanda sesi pelacakan bisa bernilai `True` atau `False` bergantung pada pengaturannya dalam perintah `START`.

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

Untuk menonaktifkanMSDTC, hapus `MSDTC` opsi dari grup opsinya.

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

**Untuk menghapus MSDTC opsi dari grup opsinya**

1. Masuk ke Konsol Manajemen AWS dan buka RDS konsol Amazon di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Grup opsi**.

1. Pilih grup opsi dengan opsi `MSDTC` (`msdtc-se-2016` dalam contoh sebelumnya).

1. Pilih **Hapus opsi**.

1. Di bawah **Opsi penghapusan, pilih Opsi MSDTC****** **untuk** dihapus.

1. Di bagian **Langsung terapkan**, pilih **Ya** untuk segera menghapus opsi, atau **Tidak** untuk menghapusnya pada masa pemeliharaan berikutnya.

1. Pilih **Hapus**.

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

**Untuk menghapus MSDTC opsi dari grup opsinya**
+ Gunakan salah satu perintah berikut ini.  
**Example**  

  Untuk Linux, macOS, atau Unix:

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

  Untuk Windows:

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

# Pemecahan Masalah MSDTC untuk Server RDS SQL
<a name="Appendix.SQLServer.Options.MSDTC.Troubleshooting"></a>

Dalam beberapa kasus, Anda mungkin mengalami kesulitan membangun koneksi antara MSDTC berjalan di komputer klien dan MSDTC layanan yang berjalan pada instance RDS for SQL Server DB. Jika demikian, pastikan beberapa hal berikut:
+ Aturan masuk untuk grup keamanan yang terkait dengan instans DB telah dikonfigurasi dengan benar. Untuk informasi selengkapnya, lihat [Tidak dapat terhubung ke instans DB Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).
+ Komputer klien Anda telah dikonfigurasi dengan benar.
+ Aturan MSDTC firewall pada komputer klien Anda diaktifkan.

**Untuk mengonfigurasi komputer klien**

1. Buka **Component Services**.

   Bisa juga melalui **Server Manager**, pilih **Tools**, lalu pilih **Component Services**.

1. Perluas **Component Services**, perluas **Computers**, perluas **My Computer**, lalu perluas **Distributed Transaction Coordinator**.

1. Buka menu konteks (klik kanan) untuk **Local DTC** dan pilih **Properties**.

1. Pilih tab **Security**.

1. Pilih semua dari opsi berikut:
   + **DTCAkses Jaringan**
   + **Allow Inbound**
   + **Allow Outbound**

1. Pastikan bahwa mode autentikasi yang benar telah dipilih:
   + **Mutual Authentication Required** – Mesin klien digabungkan ke domain yang sama dengan simpul lain yang berpartisipasi dalam transaksi terdistribusi, atau ada hubungan kepercayaan yang dikonfigurasi antar-domain.
   + **No Authentication Required** – Semua kasus lainnya.

1. Pilih **OK** untuk menyimpan perubahan Anda.

1. Jika diminta untuk memulai ulang layanan, pilih **Yes**.

**Untuk mengaktifkan aturan MSDTC firewall**

1. Buka Windows Firewall, lalu pilih **Advanced settings**.

   Bisa juga melalui **Server Manager**, pilih **Tools**, lalu pilih **Windows Firewall with Advanced Security**.
**catatan**  
Bergantung pada sistem operasi Anda, Windows Firewall mungkin disebut Windows Defender Firewall.

1. Pilih **Inbound Rules** di panel kiri.

1. Aktifkan aturan firewall berikut, jika belum diaktifkan:
   + **Koordinator Transaksi Terdistribusi () RPC**
   + **Koordinator Transaksi Terdistribusi (RPC) - EPMAP**
   + **Koordinator Transaksi Terdistribusi (TCP-In)**

1. Tutup Windows Firewall.