MULAI TRANSAKSI TERDISTRIBUSI (SQL Bertransaksi)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Managed Instance
Menentukan awal transaksi terdistribusi transact-SQL. Saat menggunakan SQL Server transaksi terdistribusi dikelola oleh Microsoft Koordinator Transaksi Terdistribusi (MS DTC), dan dalam kasus Azure SQL Managed Instance transaksi dikelola oleh layanan itu sendiri dan bukan MS DTC.
Sintaks
BEGIN DISTRIBUTED { TRAN | TRANSACTION }
[ transaction_name | @tran_name_variable ]
[ ; ]
Catatan
Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
transaction_name
Adalah nama transaksi yang ditentukan pengguna yang digunakan untuk melacak transaksi terdistribusi dalam utilitas MS DTC. transaction_name harus sesuai dengan aturan untuk pengidentifikasi dan harus <= 32 karakter.
@tran_name_variable
Adalah nama variabel yang ditentukan pengguna yang berisi nama transaksi yang digunakan untuk melacak transaksi terdistribusi dalam utilitas MS DTC. Variabel harus dideklarasikan dengan jenis data char, varchar, nchar, atau nvarchar .
Keterangan
Instans Mesin Database SQL Server yang menjalankan pernyataan BEGIN DISTRIBUTED TRANSACTION adalah penangkal transaksi dan mengontrol penyelesaian transaksi. Ketika pernyataan COMMIT TRANSACTION atau ROLLBACK TRANSACTION berikutnya dikeluarkan untuk sesi tersebut, instans pengendali meminta MS DTC mengelola penyelesaian transaksi terdistribusi di semua instans yang terlibat.
Isolasi rekam jepret tingkat transaksi tidak mendukung transaksi terdistribusi.
Cara utama instans jarak jauh Mesin Database terdaftar dalam transaksi terdistribusi adalah ketika sesi yang sudah terdaftar dalam transaksi terdistribusi menjalankan kueri terdistribusi yang mereferensikan server tertaut.
Misalnya, jika BEGIN DISTRIBUTED TRANSACTION dikeluarkan di ServerA, sesi memanggil prosedur tersimpan di ServerB dan prosedur tersimpan lainnya di ServerC. Prosedur tersimpan di ServerC menjalankan kueri terdistribusi terhadap ServerD, lalu keempat komputer terlibat dalam transaksi terdistribusi. Instans Mesin Database di ServerA adalah instans pengontrol asal untuk transaksi.
Sesi yang terlibat dalam transaksi terdistribusi SQL tidak mendapatkan objek transaksi yang dapat mereka teruskan ke sesi lain untuk secara eksplisit mendaftar dalam transaksi terdistribusi. Satu-satunya cara bagi server jarak jauh untuk mendaftar dalam transaksi adalah dengan menjadi target kueri terdistribusi atau panggilan prosedur tersimpan jarak jauh.
Ketika kueri terdistribusi dijalankan dalam transaksi lokal, transaksi secara otomatis dipromosikan ke transaksi terdistribusi jika sumber data OLE DB target mendukung ITransactionLocal. Jika sumber data OLE DB target tidak mendukung ITransactionLocal, hanya operasi baca-saja yang diizinkan dalam kueri terdistribusi.
Sesi yang sudah terdaftar dalam transaksi terdistribusi melakukan panggilan prosedur tersimpan jarak jauh yang mereferensikan server jarak jauh.
Opsi trans proc jarak jauh sp_configure mengontrol apakah panggilan ke prosedur tersimpan jarak jauh dalam transaksi lokal secara otomatis menyebabkan transaksi lokal dipromosikan ke transaksi terdistribusi yang dikelola oleh MS DTC. Opsi SET tingkat koneksi REMOTE_PROC_TRANSACTIONS dapat digunakan untuk mengambil alih default instans yang dibuat oleh sp_configure trans proc jarak jauh. Dengan opsi ini diatur, panggilan prosedur tersimpan jarak jauh menyebabkan transaksi lokal dipromosikan ke transaksi terdistribusi. Koneksi yang membuat transaksi MS DTC menjadi asal untuk transaksi. COMMIT TRANSACTION memulai penerapan terkoordinasi MS DTC. Jika opsi trans proc jarak jauh sp_configure AKTIF, panggilan prosedur tersimpan jarak jauh dalam transaksi lokal secara otomatis dilindungi sebagai bagian dari transaksi terdistribusi tanpa harus menulis ulang aplikasi untuk secara khusus menerbitkan BEGIN DISTRIBUTED TRANSACTION alih-alih BEGIN TRANSACTION.
Untuk informasi selengkapnya tentang lingkungan dan proses transaksi terdistribusi, lihat dokumentasi Microsoft Koordinator Transaksi Terdistribusi.
Izin
Memerlukan keanggotaan dalam peran publik.
Contoh
Contoh ini menghapus kandidat dari database AdventureWorks2012 pada instans lokal Mesin Database dan instans di server jarak jauh. Database lokal dan jarak jauh akan menerapkan atau mengembalikan transaksi.
Catatan
Kecuali MS DTC saat ini diinstal pada komputer yang menjalankan instans Mesin Database, contoh ini menghasilkan pesan kesalahan. Untuk informasi selengkapnya tentang menginstal MS DTC, lihat dokumentasi Microsoft Koordinator Transaksi Terdistribusi.
USE AdventureWorks2012;
GO
BEGIN DISTRIBUTED TRANSACTION;
-- Delete candidate from local instance.
DELETE AdventureWorks2012.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
-- Delete candidate from remote instance.
DELETE RemoteServer.AdventureWorks2012.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION;
GO
Lihat juga
BEGIN TRANSACTION (Transact-SQL)
TRANSAKSI PENERAPAN (SQL Bertransaksi)
COMMIT WORK (SQL Bertransaksi)
TRANSAKSI ROLLBACK (SQL Bertransaksi)
ROLLBACK WORK (SQL Bertransaksi)
SIMPAN TRANSAKSI (SQL Bertransaksi)
