sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server - stoppa eller bryt exekvering av ett SQL-skript

Raiserror-metoden

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

Detta kommer att avsluta anslutningen och därmed stoppa resten av skriptet från att köras.

Observera att både allvarlighetsgrad 20 eller högre och WITH LOG alternativ är nödvändiga för att det ska fungera på detta sätt.

Detta fungerar till och med med GO-satser, t.ex.

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

Ger dig utdata:

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.

Observera att 'ho' inte skrivs ut.

VARNINGAR:

  • Detta fungerar bara om du är inloggad som admin (rollen 'sysadmin'), och lämnar dig även utan databasanslutning.
  • Om du INTE är inloggad som admin, kommer själva RAISEERROR()-anropet att misslyckas och skriptet kommer att fortsätta köras .
  • När den anropas med sqlcmd.exe, kommer utgångskoden 2745 att rapporteras.

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

noexec-metoden

En annan metod som fungerar med GO-satser är set noexec on . Detta gör att resten av skriptet hoppas över. Det avslutar inte anslutningen, men du måste aktivera noexec av igen innan några kommandon kommer att köras.

Exempel:

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. Hur söker jag JSON-data i MySQL?

  2. Bestående UUID i PostgreSQL med JPA

  3. Hur man migrerar databaser till din återförsäljarserver

  4. Fler av mina favoritpostgreSQL-frågor - och varför de också är viktiga