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

SQL Server - menghentikan atau menghentikan eksekusi skrip SQL

Metode penggalangan dana

raiserror('Oh no a fatal error', 20, -1) with log

Ini akan memutuskan koneksi, sehingga menghentikan sisa skrip yang sedang berjalan.

Perhatikan bahwa tingkat keparahan 20 atau lebih tinggi dan WITH LOG opsi yang diperlukan untuk bekerja dengan cara ini.

Ini bahkan berfungsi dengan pernyataan GO, mis.

print 'hi'
go
raiserror('Oh no a fatal error', 20, -1) with log
go
print 'ho'

Akan memberi Anda output:

hi
Msg 2745, Level 16, State 2, Line 1
Process ID 51 has raised user error 50000, severity 20. SQL Server is terminating this process.
Msg 50000, Level 20, State 1, Line 1
Oh no a fatal error
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command.  The results, if any, should be discarded.

Perhatikan bahwa 'ho' tidak dicetak.

PERINGATAN:

  • Ini hanya berfungsi jika Anda masuk sebagai admin (peran 'sysadmin'), dan juga membuat Anda tidak memiliki koneksi database.
  • Jika Anda TIDAK login sebagai admin, panggilan RAISEERROR() itu sendiri akan gagal dan skrip akan terus dijalankan .
  • Saat dipanggil dengan sqlcmd.exe, kode keluar 2745 akan dilaporkan.

Referensi:http://www.mydatabasesupport.com/forums/ms-sqlserver/174037-sql-server-2000-abort-whole-script.html#post761334

Metode noexec

Metode lain yang bekerja dengan pernyataan GO adalah set noexec on . Ini menyebabkan sisa skrip dilewati. Itu tidak memutuskan koneksi, tetapi Anda harus mengaktifkan noexec matikan lagi sebelum perintah apa pun akan dijalankan.

Contoh:

print 'hi'
go

print 'Fatal error, script will not continue!'
set noexec on

print 'ho'
go

-- last line of the script
set noexec off -- Turn execution back on; only needed in SSMS, so as to be able 
               -- to run this script again in the same session.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gagal memperbarui database .mdf karena database hanya-baca (aplikasi Windows)

  2. Menghubungkan ke database SQL Server lokal menggunakan C#

  3. PILIH kueri dengan kondisi CASE dan SUM()

  4. Simpan beberapa nilai bit dalam satu kolom tabel

  5. Tutorial SQL Server – Semua yang Anda Butuhkan Untuk Menguasai Transact-SQL