Melakukan Transaksi di ODBC
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Penting
SQL Server Native Client (SNAC) tidak dikirim dengan:
- SQL Server 2022 (16.x) dan versi yang lebih baru
- SQL Server Management Studio 19 dan versi yang lebih baru
SQL Server Native Client (SQLNCLI atau SQLNCLI11) dan Penyedia Microsoft OLE DB warisan untuk SQL Server (SQLOLEDB) tidak direkomendasikan untuk pengembangan aplikasi baru.
Untuk proyek baru, gunakan salah satu driver berikut:
Untuk SQLNCLI yang dikirim sebagai komponen SQL Server Database Engine (versi 2012 hingga 2019), lihat pengecualian Siklus Hidup Dukungan ini.
Transaksi di ODBC dikelola pada tingkat koneksi. Ketika aplikasi menyelesaikan transaksi, aplikasi menerapkan atau mengembalikan semua pekerjaan yang diselesaikan melalui semua handel pernyataan pada koneksi tersebut. Untuk menerapkan atau mengembalikan transaksi, aplikasi harus memanggil SQLEndTran alih-alih mengirimkan pernyataan COMMIT atau ROLLBACK.
Aplikasi memanggil SQLSetConnectAttr untuk beralih di antara dua mode ODBC dalam mengelola transaksi:
Mode autocommit
Setiap pernyataan secara otomatis diterapkan ketika berhasil diselesaikan. Saat Anda berjalan dalam mode autocommit, tidak ada fungsi manajemen transaksi lain yang diperlukan.
Mode penerapan manual
Semua pernyataan yang dijalankan disertakan dalam transaksi yang sama sampai secara khusus dihentikan dengan memanggil SQLEndTran.
Mode autocommit adalah mode transaksi default untuk ODBC. Ketika koneksi dibuat, koneksi berada dalam mode autocommit hingga SQLSetConnectAttr dipanggil untuk beralih ke mode penerapan manual dengan mengatur mode autocommit nonaktif. Saat aplikasi menonaktifkan autocommit, pernyataan berikutnya yang dikirim ke database memulai transaksi. Transaksi kemudian tetap berlaku sampai aplikasi memanggil SQLEndTran dengan opsi SQL_COMMIT atau SQL_ROLLBACK. Perintah yang dikirim ke database setelah SQLEndTran memulai transaksi berikutnya.
Jika aplikasi beralih dari penerapan manual ke mode autocommit, driver melakukan transaksi apa pun yang saat ini terbuka pada koneksi.
Aplikasi ODBC tidak boleh menggunakan pernyataan transaksi Transact-SQL seperti BEGIN TRANSACTION, COMMIT TRANSACTION, atau ROLLBACK TRANSACTION karena hal ini dapat menyebabkan perilaku yang tidak ditentukan dalam driver. Aplikasi ODBC harus berjalan dalam mode autocommit dan tidak menggunakan fungsi atau pernyataan manajemen transaksi apa pun, atau berjalan dalam mode penerapan manual dan menggunakan fungsi ODBC SQLEndTran untuk menerapkan atau mengembalikan transaksi.