Support untuk Microsoft Distributed Transaction Coordinator RDS untuk Server SQL - Layanan Basis Data Relasional Amazon

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

Support untuk Microsoft Distributed Transaction Coordinator RDS untuk Server SQL

Transaksi terdistribusi adalah transaksi basis data yang melibatkan dua atau beberapa host jaringan. RDSuntuk SQL Server mendukung transaksi terdistribusi di antara host, di mana satu host dapat menjadi salah satu dari berikut:

  • RDSuntuk contoh SQL Server DB

  • Host SQL Server lokal

  • EC2Host Amazon dengan SQL Server diinstal

  • EC2Host atau instans RDS DB lainnya dengan mesin database yang mendukung transaksi terdistribusi

DiRDS, dimulai dengan SQL Server 2012 (versi 11.00.5058.0.v1 dan yang lebih baru), semua edisi untuk Server mendukung transaksi terdistribusi. RDS SQL Dukungan disediakan menggunakan Microsoft Distributed Transaction Coordinator (MSDTC). Untuk informasi mendalam tentangMSDTC, lihat Koordinator Transaksi Terdistribusi di dokumentasi Microsoft.

Batasan

Batasan berikut berlaku untuk menggunakan MSDTC on RDS for SQL Server:

  • MSDTCtidak didukung pada instance yang menggunakan SQL Server Database Mirroring. Untuk informasi selengkapnya, lihat Transactions - availability groups and database mirroring.

  • Parameter in-doubt xact resolution harus diatur ke 1 atau 2. Untuk informasi selengkapnya, lihat Memodifikasi parameter untuk MSDTC.

  • MSDTCmengharuskan semua host yang berpartisipasi dalam transaksi terdistribusi dapat diselesaikan dengan menggunakan nama host mereka. RDSsecara otomatis mempertahankan fungsionalitas ini untuk instance yang bergabung dengan domain. Namun, untuk instance mandiri pastikan untuk mengkonfigurasi DNS server secara manual.

  • Java Database Connectivity (JDBC) Transaksi XA didukung untuk SQL Server 2017 versi 14.00.3223.3 dan lebih tinggi, dan Server 2019. SQL

  • Transaksi terdistribusi yang bergantung pada pustaka tautan dinamis klien (DLLs) pada RDS instance tidak didukung.

  • Penggunaan pustaka tautan dinamis XA kustom tidak didukung.

Menggunakan transaksi

Menggunakan transaksi terdistribusi

Di Amazon RDS for SQL Server, Anda menjalankan transaksi terdistribusi dengan cara yang sama seperti transaksi terdistribusi yang berjalan di lokasi:

  • Menggunakan. NETkerangka transaksi System.Transactions promotable, yang mengoptimalkan transaksi terdistribusi dengan menunda pembuatannya sampai dibutuhkan.

    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 dalam dokumentasi Microsoft.

    Transaksi yang dapat dipromosikan didukung dengan ini. NETimplementasi:

    • Dimulai denganADO. NET2.0, System.Data.SqlClient mendukung transaksi yang dapat dipromosikan dengan SQL Server. Untuk informasi selengkapnya, lihat Integrasi System.Transactions dengan SQL Server di dokumentasi Microsoft.

    • ODP. NETmendukungSystem.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 lebih lanjut tentang dukungan transaksi terdistribusi diODP. NET, lihat Integrasi Koordinator Transaksi Terdistribusi Microsoft dalam dokumentasi Microsoft.

  • Menggunakan pernyataan BEGIN DISTRIBUTED TRANSACTION. Untuk informasi selengkapnya, lihat BEGINDISTRIBUTEDTRANSACTION(Bertransaksi-SQL) di dokumentasi Microsoft.

Menggunakan transaksi XA

Mulai dari RDS untuk SQL Server 2017 version14.00.3223.3, Anda dapat mengontrol transaksi terdistribusi menggunakan. JDBC Ketika Anda mengatur pengaturan Enable XA opsi ke true dalam MSDTC opsi, RDS secara otomatis mengaktifkan JDBC transaksi dan memberikan SqlJDBCXAUser peran kepada guest pengguna. Ini memungkinkan pelaksanaan transaksi terdistribusi melaluiJDBC. Untuk informasi selengkapnya, termasuk contoh kode, lihat Understanding XA transactions dalam dokumentasi Microsoft.

Menggunakan pelacakan transaksi

RDSmendukung pengendalian jejak MSDTC transaksi dan mengunduhnya dari instans RDS DB untuk pemecahan masalah. Anda dapat mengontrol sesi penelusuran transaksi dengan menjalankan prosedur RDS tersimpan 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.

contoh tindakan START penelusuran

Untuk memulai sesi pelacakan transaksi baru, jalankan pernyataan contoh berikut.

exec msdb.dbo.rds_msdtc_transaction_tracing 'START', @traceall='0', @traceaborted='1', @tracelong='1';
catatan

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.

contoh tindakan STOP penelusuran

Untuk menghentikan sesi pelacakan transaksi, jalankan pernyataan berikut.

exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'

Pernyataan ini menghentikan sesi penelusuran transaksi aktif dan menyimpan data jejak transaksi ke direktori log pada instans RDS DB. 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 mengunduh file log dari instans RDS DB, lihatMemantau file RDS Amazon.

Log sesi pelacakan tetap berada di instans selama 35 hari. Semua log sesi pelacakan yang lebih lama akan otomatis dihapus.

contoh tindakan STATUS penelusuran

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.