Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server - zatrzymaj lub przerwij wykonywanie skryptu SQL

Metoda raiserror

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

Spowoduje to zakończenie połączenia, a tym samym zatrzymanie działania reszty skryptu.

Zwróć uwagę, że zarówno poziom ważności 20 lub wyższy, jak i WITH LOG są konieczne, aby działał w ten sposób.

Działa to nawet z oświadczeniami GO, np.

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

Daje wynik:

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.

Zauważ, że „ho” nie jest drukowane.

OSTRZEŻENIA:

  • Działa to tylko wtedy, gdy jesteś zalogowany jako administrator (rola 'sysadmin'), a także nie daje Ci połączenia z bazą danych.
  • Jeśli NIE jesteś zalogowany jako administrator, samo wywołanie RAISEERROR() zakończy się niepowodzeniem i skrypt będzie kontynuował wykonywanie .
  • Po wywołaniu za pomocą sqlcmd.exe, zostanie zgłoszony kod zakończenia 2745.

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

Metoda noexec

Inną metodą, która działa z instrukcjami GO jest set noexec on . Powoduje to pominięcie reszty skryptu. Nie przerywa połączenia, ale musisz włączyć noexec wyłącz ponownie przed wykonaniem jakichkolwiek poleceń.

Przykład:

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. dołączona baza danych jest tylko do odczytu

  2. 13 najlepszych praktyk w zakresie bezpieczeństwa SQL Server

  3. Warunkowa instrukcja JOIN SQL Server

  4. Jak zainstalować SQL Server na komputerze Mac z VirtualBox?

  5. Jak ustalić, czy liczba jest zmiennoprzecinkowa czy całkowita?