Saya memiliki beberapa ALTER TABLE
pernyataan yang sedang saya jalankan. Tidak semua dari mereka bekerja (mereka adalah hasil dari menjalankan Bandingkan Data SQL) dan saya ingin mengelompokkan mereka dalam beberapa transaksi dan memutar kembali pernyataan jika ada yang salah.
Apakah ini mungkin, atau hanya data yang dapat diputar kembali?
sql-server
t-sql
transaction
rollback
Piers Karsenbarg
sumber
sumber
Jawaban:
sumber
SET XACT_ABORT ON
dan finalCOMMIT TRAN
meniadakan perlunyaTRY
blok?Ya, ini mungkin.
Sebagian besar pernyataan DDL dapat diputar kembali di SQL Server (Ada beberapa pengecualian seperti
CREATE DATABASE
)sumber
Banyak perubahan dalam satu transaksi dengan
rollback
dancommit
- itu bukan mimpi. Itu mungkin.Berikut adalah scaffold untuk skrip Anda (mengikuti pedoman MS dengan peningkatan):
Hati-hati,
THROW
hanya berfungsi untuk versi SQL SERVER> 2012. Di sini Anda dapat mengkonversi versi dari notasi semver ke tahun : http://sqlserverbuilds.blogspot.ru (tidak mengetahui.ru
domain, ada versi bahasa Inggris)sumber
Anda perlu melihat ke dalam transaksi dan penanganan pengecualian di T-SQL. Lihatlah dua contoh terakhir di halaman ini: http://msdn.microsoft.com/en-us/library/ms175976.aspx
sumber