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
Daftar Isi
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 Serverdi dokumentasi Microsoft. -
ODP. NETmendukung
System.Transactions
. Transaksi lokal dibuat untuk koneksi pertama yang dibuka dalam cakupanTransactionsScope
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 Microsoftdalam 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
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 berupaSTART
,STOP
, atauSTATUS
.
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
atauFalse
bergantung pada pengaturannya dalam perintahSTART
.