Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Keluar dan kembalikan semua yang ada di skrip saat kesalahan

Ketika kesalahan terjadi, transaksi dibatalkan secara otomatis, dan batch saat ini dibatalkan.

Namun, eksekusi berlanjut ke batch berikutnya. Jadi semua barang dalam batch setelah kesalahan dieksekusi. Dan kemudian ketika Anda memeriksa kesalahan nanti, Anda mencoba mengembalikan transaksi yang sudah dibatalkan.

Juga, untuk menghentikan seluruh skrip, bukan hanya kumpulan saat ini, Anda harus menggunakan:

raiserror('Error description here', 20, -1) with log

Lihat jawaban saya di sini untuk detail tentang itu.

Jadi, Anda perlu memeriksa @error setelah setiap batch, saya pikir sesuatu seperti ini akan berfungsi:

BEGIN TRANSACTION
GO

ALTER Stuff
GO

if @@error != 0 raiserror('Script failed', 20, -1) with log
GO

CREATE New Stuff
GO

if @@error != 0 raiserror('Script failed', 20, -1) with log
GO

DROP Old Stuff
GO

if @@error != 0 raiserror('Script failed', 20, -1) with log
GO

PRINT 'No Errors ... Committing changes'
COMMIT TRANSACTION


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memilih Prosesor untuk SQL Server 2014 – Bagian 1

  2. Filter pada klausa Output sql

  3. Apakah mungkin untuk menyebarkan paket SSIS 2012 di SQL Server 2008

  4. Mengubah Kolom Tabel untuk Menerima Lebih Banyak Karakter

  5. SQL Server:Nama Kolom Tidak Valid