Wie kann SQL Server Management Studio die Verarbeitung bei einem Fehler beenden?
Dies scheint wie eine unglaublich dumme Frage stellen zu müssen, aber wie bekomme ich SQL Server Management Studio beenden der Verarbeitung einer SQL-Skript, wenn es auf einen Fehler stößt?
Ich habe ein langes script, und wenn es ein Fehler am start SSMS Berichte und dann blind trägt auf, kniff die Dinge noch mehr. Ich kann keine Transaktionen verwenden, weil das Skript erstellt mehrere Datenbanken, und Sie können nicht gehen in einer Transaktion. Es ist die Erstellung der Datenbank, manchmal nicht.
Toad for SQL Server wird angehalten, beim ersten Fehler, auf die es trifft und Fragen Sie, wenn Sie wollen, zu stoppen oder fortzusetzen. Dies ist das Verhalten, was ich Suche. Gibt es im SSMS?
Ich bin nicht zu Fragen, "Wie kann ich schreiben oder modifizieren Sie ein Skript, so dass es halt auf einem Fehler?" Ich bin nicht daran interessiert, ändern mein Skript um dies möglich zu machen, ich will nur SSMS zu Anschlag auf einen Fehler. Toad for SQL Server tut genau dies und das ist das Verhalten was ich will. Auch dies ist kein Duplikat von Sechs hundert neun und fünfzig tausend eins hundert acht und achtzig denn das bezieht sich auf die änderung die das Skript stoppen SSMS.
InformationsquelleAutor der Frage TallGuy | 2009-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort: das können Sie nicht.
Danke an diejenigen, die zur Verfügung gestellt workarounds, aber es scheint, dass SSMS selbst kann nicht eingestellt werden, zu pausieren oder zu beenden auf einen Fehler in der gleichen Weise, dass Toad for SQL Server können.
InformationsquelleAutor der Antwort TallGuy
ApexSQL Script erzeugt batch-Skripte in genau der Weise, die Sie wollen. Als Beispiel:
InformationsquelleAutor der Antwort yfeldblum
verwenden Sie das Kommandozeilen-Programm 'sqlcmd', die mit SQL Server geliefert wird, wobei-b-und-die -V-Optionen haben. -b Ursache von sqlcmd beenden, wenn es sich trifft, ist ein Fehler. -V steuert den Schweregrad, die als ein Fehler.
InformationsquelleAutor der Antwort Phil Dennis
Müssen Sie wickeln Sie Ihre SQL-Anweisungen innerhalb eines Transaktion.
Wenn es einen Fehler innerhalb der begin/end transaction-Anweisungen Rollback durchgeführt wird.
EDIT: Verpackung innen innen begin/end transaction, wird verhindert, dass die Aussagen immer an die Datenbank übergeben, aber nicht aufhören, es an diesem Punkt. Sie müssen zusätzlich wickeln Sie es in einem try/catch-block wie folgt:
InformationsquelleAutor der Antwort Jose Basilio
Wow. Das ist irgendwie Quatsch, nicht wahr? Ich verwende SQL-Workbench, die, wie Toad for SQL Server, verarbeitet diese leicht. Im Gegensatz zu Toad for SQL Server ist es allerdings kostenlos.
Ich bin erstaunt, dass derart grundlegende Funktionalität ist nicht Teil des standard-tool.
InformationsquelleAutor der Antwort
würden mit einem try-catch-block hier helfen. Auf Fehler der Versuch wird beendet, implementieren der Fehlerbehandlung im catch -
http://msdn.microsoft.com/en-us/library/ms179296.aspx
InformationsquelleAutor der Antwort Stuart
Wenn Sie nicht setzen Sie Ihr Skript in einer gespeicherten Prozedur und die Verwendung der return-Anweisung zum beenden auf-Fehler, die Lösung von @Gerechtigkeit könnte Ihre beste Wette. Alle anderen fehlt der Punkt - Sie können nicht wieder aus einem Skript, auch wenn Sie Transaktionen verwenden, oder auch wenn Sie raiserror. SSMS führen Sie einfach die nächste Sache trotzdem, auch wenn set xact abort auf.
Wenn Sie können konvertieren Sie Ihre Skript, um eine gespeicherte Prozedur, dann kannst du nur wieder aus, wenn Sie erkennen, einen Fehler.
InformationsquelleAutor der Antwort Eric Z Beard
Gibt es ein paar mehr Workarounds, die hier erwähnt:
SQL Server - stoppen oder unterbrechen der Ausführung eines SQL-Skripts
und
SQL Server: Wie zum Abbruch einer Serie von Chargen in Query Analyzer?
(raiseerror 20 mit Baumstamm, set noexec auf, sqlcmd-Modus :on error exit, etc.)
InformationsquelleAutor der Antwort user423430