Wie setzen weitere Informationen über den Fehler an eine gespeicherte Prozedur in SQL-agent
Ich habe eine SQL-agent-Auftrags-setup aus, und in diesem job-es ist ein Schritt zum ausführen einer stored proc. Wenn Sie, dass gespeicherte Prozedur fehlschlägt, dann wird die SQL-agent-Auftrag wird eine Fehlermeldung angezeigt, aber keine weiteren Informationen. So etwas wie einen stacktrace oder zumindest die gespeicherte Prozedur ausgeführt wurde, und die Nummer der Zeile, wäre sehr nützlich.
z.B.
Wenn Sie die folgende gespeicherte Prozedur ausgeführt wird, dann wird ein Fehler mit der Meldung "Ausgeführt als Benutzer:" NT AUTHORITY\NETWORK SERVICE. Start [SQLSTATE 01000] (Nachricht 0) Ungültiger Objektname 'NonExistentTable'. [SQLSTATE: 42S02] (Fehler 208). Der Schritt ist fehlgeschlagen." ohne Angabe, wo genau der Fehler aufgetreten ist.
CREATE PROCEDURE TestSpLogging AS
BEGIN
PRINT 'Start'
SELECT * FROM NonExistentTable
PRINT 'End'
END
Was ist der beste Weg, um zu bewirken, dass diese Informationen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mittels des Ansatzes eine detaillierte http://www.sommarskog.se/error_handling_2005.html scheint ausreichend funktioniert so weit. Es ist nur erforderlich ein update der top-level-stored procedure und output der name der gespeicherten Prozedur, die gescheitert sind und die Zeilennummer der SQL-agent.
Den Ausgang Fehler wird wie folgt Aussehen:
Ausgeführt als Benutzer: "NT AUTHORITY\NETWORK SERVICE. *** [InnerInnerStoredProc2], 5. Errno 208: Ungültiger Objektname 'NonExistentTable'. [SQLSTATE 42000] (Fehler 50000) Start [SQLSTATE 01000] (Fehler 0). Der Schritt ist fehlgeschlagen.
Zusammenfassung der Schritte:
Erstellen, wird der folgende Fehler-handler gespeicherte Prozedur:
Wickeln Sie die top-level-gespeicherte Prozedur in einen try-catch wie folgt
Einen Weg, dies zu tun wäre, fügen Sie einige Fehler handling, um die gespeicherte Prozedur. Hier ist eine einfache Methode, die wir hier benutzen, ist so etwas wie das