Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:Azure Synapse Analytics Analytics
Platform System (PDW)
Transaksi adalah grup dari satu atau beberapa pernyataan database yang sepenuhnya diterapkan atau sepenuhnya digulung balik. Setiap transaksi bersifat atomik, konsisten, terisolasi, dan tahan lama (ACID). Jika transaksi berhasil, semua pernyataan di dalamnya akan diterapkan. Jika transaksi gagal, setidaknya salah satu pernyataan dalam grup gagal, maka seluruh grup digulung balik.
Catatan
Perintah SET AUTOCOMMIT tidak didukung di Microsoft Fabric Data Warehouse. Untuk informasi selengkapnya tentang transaksi, isolasi, konkurensi, dan konsistensi di Gudang Data Microsoft Fabric, sebagai gantinya lihat Transaksi di Gudang Data Fabric.
Awal dan akhir transaksi tergantung pada AUTOCOMMIT pengaturan dan BEGIN TRANSACTIONpernyataan , , COMMITdan ROLLBACK .
Jenis transaksi berikut didukung:
Transaksi eksplisit dimulai dengan
BEGIN TRANSACTIONpernyataan dan diakhiriCOMMITdengan pernyataan atauROLLBACK.Transaksi penerapan otomatis dimulai secara otomatis dalam sesi dan tidak dimulai dengan
BEGIN TRANSACTIONpernyataan.-
AUTOCOMMITKetika pengaturan adalahON, setiap pernyataan berjalan dalam transaksi dan tidak ada eksplisitCOMMITatauROLLBACKdiperlukan. -
AUTOCOMMITKetika pengaturan adalahOFF, pernyataanCOMMITatauROLLBACKdiperlukan untuk menentukan hasil transaksi. Transaksi autocommit dimulai segera setelah pernyataanCOMMITatauROLLBACK, atau setelahSET AUTOCOMMIT OFFpernyataan.
-
Sintaks
BEGIN TRANSACTION [;]
COMMIT [ TRAN | TRANSACTION | WORK ] [;]
ROLLBACK [ TRAN | TRANSACTION | WORK ] [;]
SET AUTOCOMMIT { ON | OFF } [;]
SET IMPLICIT_TRANSACTIONS { ON | OFF } [;]
Argumen
MULAI TRANSAKSI
Menandai titik awal transaksi eksplisit.
COMMIT [ WORK ]
Menandai akhir transaksi eksplisit atau autocommit. Pernyataan ini menyebabkan perubahan transaksi diterapkan secara permanen ke database. Pernyataan COMMIT ini identik dengan COMMIT WORK, COMMIT TRAN, dan COMMIT TRANSACTION.
ROLLBACK [ WORK ]
Mengembalikan transaksi ke awal transaksi. Tidak ada perubahan untuk transaksi yang diterapkan pada database. Pernyataan ROLLBACK ini identik dengan ROLLBACK WORK, ROLLBACK TRAN, dan ROLLBACK TRANSACTION.
ATUR AUTOCOMMIT { ON | NONAKTIF }
Menentukan bagaimana transaksi dapat dimulai dan berakhir.
Jika Anda mengubah AUTOCOMMIT pengaturan dalam transaksi aktif, pengaturan tersebut memengaruhi transaksi saat ini dan tidak berlaku hingga transaksi selesai.
Jika AUTOCOMMIT adalah ON, menjalankan pernyataan lain SET AUTOCOMMIT ON tidak berpengaruh. Demikian juga, jika AUTOCOMMIT adalah OFF, menjalankan yang lain SET AUTOCOMMIT OFF tidak berpengaruh.
AKTIF
Setiap pernyataan berjalan di bawah transaksinya sendiri dan tidak ada eksplisit COMMIT atau ROLLBACK pernyataan yang diperlukan. Transaksi eksplisit diperbolehkan ketika AUTOCOMMIT adalah ON.
TIDAK AKTIF
Azure Synapse Analytics secara otomatis memulai transaksi saat transaksi belum berlangsung. Setiap pernyataan berikutnya dijalankan sebagai bagian dari transaksi dan COMMIT atau ROLLBACK diperlukan untuk menentukan hasil transaksi. Segera setelah transaksi diterapkan atau digulung balik dalam mode operasi ini, mode tetap OFF, transaksi baru dimulai. Transaksi eksplisit tidak diperbolehkan ketika AUTOCOMMIT adalah OFF.
SET IMPLICIT_TRANSACTIONS { ON | NONAKTIF }
Ini mengalihkan mode yang sama dengan SET AUTOCOMMIT. Ketika ON, SET IMPLICIT_TRANSACTIONS mengatur koneksi ke dalam mode transaksi implisit. Ketika OFF, ia mengembalikan koneksi ke mode autocommit. Untuk informasi selengkapnya, lihat SET IMPLICIT_TRANSACTIONS (Transact-SQL).
Izin
Tidak ada izin khusus yang diperlukan untuk menjalankan pernyataan terkait transaksi. Izin diperlukan untuk menjalankan pernyataan dalam transaksi.
Penanganan kesalahan
Jika COMMIT atau ROLLBACK dijalankan dan tidak ada transaksi aktif, kesalahan akan muncul.
BEGIN TRANSACTION Jika dijalankan saat transaksi sudah berlangsung, kesalahan akan muncul. Ini dapat terjadi jika BEGIN TRANSACTION terjadi setelah pernyataan yang berhasil BEGIN TRANSACTION atau ketika sesi berada di bawah SET AUTOCOMMIT OFF.
Jika kesalahan selain kesalahan pernyataan run-time mencegah keberhasilan penyelesaian transaksi eksplisit, mesin database secara otomatis mengembalikan transaksi dan membebaskan semua sumber daya yang disimpan oleh transaksi. Misalnya, jika koneksi jaringan klien rusak atau klien keluar dari aplikasi, setiap transaksi yang tidak dilakukan untuk koneksi digulung balik ketika jaringan memberi tahu instans jeda.
Jika kesalahan pernyataan run-time terjadi dalam batch, Azure Synapse Analytics berperilaku konsisten dengan SQL Server XACT_ABORT yang diatur ke ON dan seluruh transaksi digulung balik. Untuk informasi selengkapnya tentang pengaturan, XACT_ABORT lihat SET XACT_ABORT (Transact-SQL).
Komentar
Sesi hanya dapat menjalankan satu transaksi pada waktu tertentu; titik simpan dan transaksi berlapis tidak didukung.
Programmer bertanggung jawab untuk menerbitkan COMMIT hanya pada titik ketika semua data yang direferensikan oleh transaksi secara logis benar.
Ketika sesi dihentikan sebelum transaksi selesai, transaksi digulung balik.
Mode transaksi dikelola pada tingkat sesi. Misalnya, jika satu sesi memulai transaksi eksplisit atau diatur AUTOCOMMIT ke OFF, atau diatur IMPLICIT_TRANSACTIONS ke ON, itu tidak berpengaruh pada mode transaksi sesi lain.
Keterbatasan
Anda tidak dapat mengembalikan transaksi setelah COMMIT pernyataan dikeluarkan karena modifikasi data telah dibuat sebagai bagian permanen dari database.
Perintah CREATE DATABASE dan DROP DATABASE (Transact-SQL) tidak dapat digunakan di dalam transaksi eksplisit.
Azure Synapse Analytics tidak memiliki mekanisme berbagi transaksi. Ini menyiratkan bahwa pada titik waktu tertentu, hanya satu sesi yang dapat melakukan pekerjaan pada transaksi apa pun dalam sistem.
Perilaku penguncian
Penguncian memastikan integritas transaksi dan mempertahankan konsistensi database saat beberapa pengguna mengakses data secara bersamaan. Penguncian digunakan oleh transaksi implisit dan eksplisit. Setiap transaksi meminta kunci dari berbagai jenis pada sumber daya, seperti tabel atau database tempat transaksi bergantung.
Semua kunci adalah tingkat tabel atau lebih tinggi. Kunci memblokir transaksi lain agar tidak memodifikasi sumber daya dengan cara yang akan menyebabkan masalah untuk transaksi yang meminta kunci. Setiap transaksi membebaskan kuncinya ketika tidak lagi memiliki dependensi pada sumber daya yang terkunci; transaksi eksplisit menyimpan kunci hingga transaksi selesai ketika dilakukan atau digulung balik.
Examples
J. Menggunakan transaksi eksplisit
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT;
B. Menggulung balik transaksi terbuka
Contoh berikut menunjukkan efek menggulung balik transaksi. Dalam contoh ini, ROLLBACK pernyataan mengembalikan INSERT pernyataan, tetapi tabel yang dibuat masih akan ada.
CREATE TABLE ValueTable (id INT);
BEGIN TRANSACTION;
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
ROLLBACK;
C. Atur AUTOCOMMIT
Contoh berikut mengatur pengaturan ke AUTOCOMMITON.
SET AUTOCOMMIT ON;
Contoh berikut mengatur pengaturan ke AUTOCOMMITOFF.
SET AUTOCOMMIT OFF;
D. Menggunakan transaksi multi-pernyataan implisit
SET AUTOCOMMIT OFF;
CREATE TABLE ValueTable (id INT);
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
COMMIT;