SQL Server 2005 baru dikenalkanlah cara untuk rollback transaksi di SQL Server 2005
SET ON XACT_ABORT
ketika XACT_ABORT ada di. T-SQL secara otomatis akan rollback transaksi ketika terjadi kesalahan dalam laporan.
SET ON XACT_ABORT
GUNAKAN Emp
Mulailah Tran
Masukkan ke dalam Nilai EmpInfo(1)
Masukkan ke dalam Nilai EmpInfo(1) — Pernyataan ini akan meningkatkan kesalahan primary key
Masukkan ke dalam Nilai EmpInfo(2)
Commit Tran
Baris pertama statment akan mengeksekusi tanpa kesalahan. Kesalahan kunci primer akan membangkitkan di baris kedua. Tapi transaksi seluruh blok tidak akan berkomitmen karena XACT_ABORT dalam pada.
Anda harus mencatat bahwa XACT_ABORT berakhir batch * saat ini *, tidak seluruh perintah. Batch dipisahkan dengan kata kunci GO. Eksekusi akan terus pada awal batch berikutnya.
Fitur ini juga di SQL Server 2000, meskipun berperilaku sedikit berbeda untuk berbagai kesalahan.
Dalam SQL 2000, ada kasus di mana XACT_ABORT gagal untuk rollback transaksi secara otomatis.
Misalnya:
Memasukkan ke dalam nama kolom tidak valid.
Memasukkan ke primary key dengan IDENTITY_INSERT OFF.
Pelaksana SELECT yang menggunakan UDF tidak ada.
Jenis kesalahan biasanya karena perintah buruk ditulis, sehingga mereka tidak terjadi dalam operasi sehari-hari dari program anda kecuali seseorang mengubah skema. Tapi saya menjelaskan kemungkinan mereka ketika script update database authoring ketika deploying versi baru dari sebuah proyek, hanya dalam kasus penyebaran tidak berjalan seperti yang direncanakan.
Ada cara untuk menangani kesalahan. COMMIT anda harus dalam batch melakukan laporan DML. Setelah batch (setelah kata kunci GO) Anda dapat memeriksa @ @ TRANCOUNT untuk melihat apakah itu lebih besar dari nol dan bertindak sesuai. Biasanya ROLLBACK transaksi.
Transaksi dapat span batch, sehingga Anda bisa menjalankan rollback di batch berikutnya.