368 Stimmen

SQL Server - Anhalten oder Unterbrechen der Ausführung eines SQL-Skripts

Gibt es eine Möglichkeit, die Ausführung eines SQL-Skripts in SQL Server sofort zu stoppen, z. B. mit einem "break"- oder "exit"-Befehl?

Ich habe ein Skript, das einige Überprüfungen und Nachforschungen durchführt, bevor es mit dem Einfügen beginnt, und ich möchte, dass es anhält, wenn eine der Überprüfungen oder Nachforschungen fehlschlägt.

3voto

Vishal Kiri Punkte 1130

Sie können die GOTO-Anweisung verwenden. Versuchen Sie dies. Dies ist eine vollständige Verwendung für Sie.

WHILE(@N <= @Count)
BEGIN
    GOTO FinalStateMent;
END

FinalStatement:
     Select @CoumnName from TableName

1voto

Vielen Dank für die Antwort!

raiserror() funktioniert einwandfrei, aber man sollte nicht vergessen, die return Anweisung, sonst läuft das Skript ohne Fehler weiter! (daher ist der Raiserror kein "Throwror" ;-)) und natürlich ein Rollback wenn nötig!

raiserror() ist gut, um der Person, die das Skript ausführt, mitzuteilen, dass etwas schief gelaufen ist.

1voto

Bhargav Shah Punkte 11

Wenn Sie einfach ein Skript in Management Studio ausführen und die Ausführung stoppen oder die Transaktion (falls verwendet) beim ersten Fehler zurücksetzen wollen, dann ist es am besten, einen Try-Catch-Block (ab SQL 2005) zu verwenden. Dies funktioniert gut im Management Studio, wenn Sie eine Skriptdatei ausführen. Auch Stored Proc kann dies immer verwenden.

1voto

Vasudev Punkte 663

Schließen Sie es in einen try-catch-Block ein, dann wird die Ausführung an catch übergeben.

BEGIN TRY
    PRINT 'This will be printed'
    RAISERROR ('Custom Exception', 16, 1);
    PRINT 'This will not be printed'
END TRY
BEGIN CATCH
    PRINT 'This will be printed 2nd'
END CATCH;

0voto

Lee Punkte 191

Früher haben wir folgendes verwendet ... das hat am besten funktioniert:

RAISERROR ('Error! Connection dead', 20, 127) WITH LOG

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X