Koordinator Transaksi Terdistribusi (DTC) untuk Azure SQL Managed Instance
Berlaku untuk: Azure SQL Managed Instance
Artikel ini memberikan gambaran umum Koordinator Transaksi Terdistribusi (DTC) untuk Azure SQL Managed Instance. Anda dapat menggunakan DTC untuk menjalankan transaksi terdistribusi di lingkungan campuran, termasuk di seluruh instans terkelola, instans SQL Server, sistem manajemen database relasional lainnya (RDBMS), aplikasi kustom, dan peserta transaksi lainnya yang dihosting di lingkungan apa pun yang dapat membangun konektivitas jaringan ke Azure.
Skenario
Anda dapat mengaktifkan DTC untuk Azure SQL Managed Instance untuk menjalankan transaksi terdistribusi di beberapa lingkungan yang dapat membangun konektivitas jaringan ke Azure. DTC untuk SQL Managed Instance dikelola, yang berarti bahwa Azure mengurus manajemen dan pemeliharaan, seperti pengelogan, penyimpanan, ketersediaan DTC, dan jaringan. Selain aspek terkelola, DTC untuk SQL Managed Instance adalah layanan Windows DTC yang sama yang mendukung transaksi terdistribusi tradisional untuk SQL Server.
DTC untuk SQL Managed Instance membuka berbagai teknologi dan skenario, termasuk XA, .NET, T-SQL, COM+, ODBC, dan JDBC.
Untuk menjalankan transaksi terdistribusi, selesaikan tugas-tugas ini:
- Konfigurasikan DTC.
- Aktifkan konektivitas jaringan di antara peserta.
- Mengonfigurasikan pengaturan DNS.
Catatan
Untuk transaksi terdistribusi T-SQL atau .NET di seluruh database yang hanya dihosting oleh instans terkelola, kami sarankan Anda menggunakan dukungan asli untuk transaksi terdistribusi.
Persyaratan
Untuk mengubah pengaturan DTC, Anda harus memiliki izin tulis untuk Microsoft.Sql/managedInstances/dtc
sumber daya. Untuk melihat pengaturan DTC, Anda harus memiliki izin baca untuk Microsoft.Sql/managedInstances/dtc
sumber daya.
Mengonfigurasikan DTC
Anda dapat mengonfigurasi DTC dengan portal Azure, Azure PowerShell, dan CLI.
Untuk mengonfigurasi DTC dengan menggunakan portal Azure:
Di portal Azure, buka instans terkelola Anda.
Di menu sebelah kiri di bawah Pengaturan, pilih Koordinator Transaksi Terdistribusi.
Pada tab Dasar , atur Koordinator Transaksi Terdistribusi ke Diaktifkan.
Pada tab Keamanan , izinkan transaksi masuk atau keluar, dan aktifkan XA atau SNA LU.
Pada tab Jaringan , tentukan DNS DTC, dan dapatkan informasi untuk mengonfigurasi DNS dan jaringan eksternal.
Konektivitas jaringan
Untuk menggunakan DTC, semua peserta transaksi harus memiliki koneksi jaringan ke Azure. Karena instans terkelola selalu disebarkan ke jaringan virtual khusus di Azure, Anda harus menghubungkan lingkungan eksternal Anda ke jaringan virtual instans terkelola Anda. Dalam konteks ini, eksternal mengacu pada objek atau proses apa pun yang bukan instans terkelola Anda. Jika sumber daya eksternal Anda juga menggunakan jaringan virtual di Azure, Anda dapat menggunakan peering jaringan virtual. Jika tidak, buat konektivitas dengan menggunakan metode pilihan Anda, seperti VPN titik-ke-situs, Azure ExpressRoute, atau teknologi konektivitas jaringan lain yang memenuhi kebutuhan bisnis Anda.
Port 135 harus mengizinkan komunikasi masuk dan keluar, rentang port 14000-15000 harus mengizinkan masuk, dan 49152-65535 harus mengizinkan komunikasi keluar, di grup keamanan jaringan jaringan virtual untuk instans terkelola dan di firewall apa pun yang disiapkan di lingkungan eksternal.
Pengaturan DNS
DTC mengandalkan nama NetBIOS peserta transaksi untuk komunikasi bersama. Karena protokol NetBIOS tidak didukung oleh jaringan Azure dan nama NetBIOS tidak dapat diselesaikan di lingkungan campuran, DTC untuk instans terkelola bergantung pada server nama DNS untuk resolusi nama host. Host DTC instans terkelola secara otomatis terdaftar di server Azure DNS. Anda harus mendaftarkan host DTC eksternal dengan server DNS. Instans terkelola dan lingkungan eksternal juga harus bertukar akhiran DNS.
Diagram berikut menunjukkan resolusi nama di seluruh lingkungan campuran:
Catatan
Anda tidak perlu mengonfigurasi pengaturan DNS jika Anda berencana menggunakan DTC hanya untuk transaksi XA.
Untuk bertukar akhiran DNS:
Di portal Azure, buka instans terkelola Anda.
Di menu sebelah kiri di bawah Pengaturan, pilih Koordinator Transaksi Terdistribusi. Pilih tab Jaringan.
Dalam konfigurasi DNS, pilih Akhiran DNS eksternal baru. Masukkan akhiran DNS untuk lingkungan eksternal Anda, seperti
dnszone1.com
.Salin nilai untuk akhiran DNS Host DTC. Kemudian gunakan perintah
Set-DnsClientGlobalSetting -SuffixSearchList $list
PowerShell di lingkungan eksternal Anda untuk mengatur akhiran DNS Host DTC. Misalnya, jika akhiran Anda adalahabc1111111.database.windows.net
, tentukan parameter Anda$list
untuk mendapatkan pengaturan DNS yang ada. Kemudian, tambahkan akhiran Anda ke dalamnya seperti yang ditunjukkan dalam contoh berikut:$list = (Get-DnsClientGlobalSetting).SuffixSearchList + "abc1111111.database.windows.net" Set-DnsClientGlobalSetting -SuffixSearchList $list
Menguji konektivitas jaringan
Setelah Anda mengonfigurasi jaringan dan DNS, jalankan Test-NetConnection (TNC) antara titik akhir DTC instans terkelola Anda dan host DTC eksternal.
Untuk menguji koneksi, pertama-tama perbarui nilai yang dapat dikonfigurasi pengguna. Kemudian, gunakan skrip PowerShell berikut pada lingkungan eksternal untuk mengidentifikasi nama domain yang sepenuhnya memenuhi syarat (FQDN) dari instans terkelola host DTC. Berikut contohnya:
# ===============================================================
# Get DTC settings
# ===============================================================
# User-configurable values
#
$SubscriptionId = "a1a1a1a1-8372-1d28-a111-1a2a31a1a1a1"
$RgName = "my-resource-group"
$MIName = "my-instance-name"
# ===============================================================
#
$startMoveUri = "https://management.azure.com/subscriptions/" + $SubscriptionId + "/resourceGroups/" + $RgName + "/providers/Microsoft.Sql/managedInstances/" + $MIName + "/dtc/current?api-version=2022-05-01-preview"
Write-Host "Sign in to Azure subscription $SubscriptionID ..."
Select-AzSubscription -SubscriptionName $SubscriptionID
$azContext = Get-AzContext
$azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($azProfile)
Write-Host "Getting authentication token for REST API call ..."
$token = $profileClient.AcquireAccessToken($azContext.Subscription.TenantId)
$authHeader = @{'Content-Type'='application/json';'Authorization'='Bearer ' + $token.AccessToken}
# Invoke API call to start the operation
#
Write-Host "Starting API call..."
$startMoveResp = Invoke-WebRequest -Method Get -Headers $authHeader -Uri $startMoveUri
Write-Host "Response:" $startMoveResp
# End
# ===============================================================
Output JSON terlihat seperti contoh FQDN berikut:
chn000000000000.zcn111111111.database.windows.net
Mana:
chn000000000000
adalah nama NetBIOS dari host DTC instans terkelola.zcn111111111.database.windows.net
adalah akhiran DNS.
Selanjutnya, jalankan TNC ke FQDN dan nama NetBIOS dari host DTC instans terkelola pada port 135. Dalam contoh berikut, entri pertama memverifikasi konektivitas jaringan. Entri kedua memverifikasi bahwa pengaturan DNS sudah benar.
tnc chn000000000000.zcn111111111.database.windows.net -Port 135
tnc chn000000000000 -Port 135
Jika konektivitas dan akhiran DNS dikonfigurasi dengan benar, output TcpTestSucceeded : True muncul.
Di sisi instans terkelola, buat pekerjaan SQL Agent untuk menjalankan perintah TNC PowerShell untuk menguji konektivitas ke host eksternal Anda.
Misalnya, jika FQDN untuk host eksternal Anda adalah host10.dnszone1.com
, jalankan pengujian berikut melalui pekerjaan Agen SQL Anda:
tnc host10.dnszone1.com -Port 135
tnc host10 -Port 135
Batasan
Pertimbangkan keterbatasan berikut saat Anda menggunakan DTC dengan SQL Managed Instance:
- Menjalankan transaksi T-SQL terdistribusi antara SQL Managed Instance dan RDBMS pihak ketiga tidak didukung. SQL Managed Instance tidak mendukung server tertaut yang memiliki RDBMS pihak ketiga. Sebaliknya, menjalankan transaksi T-SQL terdistribusi antara instans terkelola dan SQL Server serta produk berbasis SQL Server lainnya didukung.
- Nama host di lingkungan eksternal tidak boleh berisi lebih dari 15 karakter.
- Transaksi terdistribusi ke Azure SQL Database tidak didukung dengan DTC.
- Untuk autentikasi, DTC hanya mendukung opsi tanpa autentikasi. Opsi autentikasi timbal balik dan autentikasi pemanggil masuk tidak tersedia. Karena DTC hanya bertukar pesan sinkronisasi dan bukan data pengguna, dan karena DTC hanya berkomunikasi dengan jaringan virtual, keterbatasan ini bukan merupakan risiko keamanan.
Kelola transaksi
Untuk melihat statistik transaksi terdistribusi, lihat sys.dm_tran_distributed_transaction_stats.
Anda dapat mereset log DTC dengan prosedur tersimpan sp_reset_dtc_log.
Transaksi terdistribusi dapat dikelola dengan prosedur tersimpan sys.sp_manage_distributed_transaction.
Langkah berikutnya
Untuk dukungan transaksi terdistribusi instans terkelola asli, lihat Transaksi elastis.