Hallo Leute!
Ich hab da mal eine Frage. Bin eigentlich in der Welt des PL/SQL daheim, hab aber jetzt eine Aufgabe bekommen für MS SQL etwas zu programmieren. Hier ist ja die angewandte Sprache T-SQL. Da das T-SQL dem PL/SQL zwar ähnlich ist, aber doch seine Unterschiede aufweist, stehe ich vor folgendem Problem:
Ich möchte ein Error-Handling machen, dass im Fehlerfall die Prozedur beendet und ein Log-File mit dem Fehler schreibt.
Hierzu benötige ich aber Hilfe.
-
wie ist es bei MS SQL (T-SQL) möglich, ein File mit gewissen Inhalten zu schreiben (Errorhandling)
-
wie kann ich dann das Package kontrolliert zum Absturz bringen, sodass darüberliegende Prozeduren wissen, dass diese Prozedur fehlerhaft beendet wurde (im PL/SQL wäre das ein RAISE_APPLICATION_ERROR)
Kann mir hier vielleicht wer weiterhelfen???
zur Verdeutlichung mein CATCH-Zweig, den ich gerne in ein File abgespeichert hätte
BEGIN CATCH
– Fehlerhandling
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() as ErrorState,
ERROR_PROCEDURE() as ErrorProcedure,
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
–
– Im Fehlerfall soll alles Rückgängig gemacht werden
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION Replikation;
END CATCH
- wie kann ich dann das Package kontrolliert zum Absturz
bringen, sodass darüberliegende Prozeduren wissen, dass diese
Prozedur fehlerhaft beendet wurde (im PL/SQL wäre das ein
RAISE_APPLICATION_ERROR)
Hy Leute!
Habe mich heute den Tag wieder weiter beschäftigt mit T-SQL. Bezüglich Punkt 2 habe ich eine Lösung gefunden. Mit Hilfe von RAISERROR habe ich die gewünschte Wirkung, welche meine Prozedur kontrolliert abstürzen lässt und dies auch dem Aufrufenden Package mitteilt.
Bzgl. Punkt 1 ein File schreiben, habe ich allerdings noch keine Lösung gefunden. Vielleicht findet sich noch jemand, der mir hier helfen kann.
Danke
- wie ist es bei MS SQL (T-SQL) möglich, ein File mit
gewissen Inhalten zu schreiben (Errorhandling)
Hy Leute!
Ich wollte euch nur informieren, dass ich es jetzt auch geschafft habe, ein File auf den Server zu schreiben innerhalb einer Prozedur. Sollte mal einer genau das gleiche Problem haben wie ich, hier die Lösung, welche ich gefunden habe
DECLARE @cmd NVARCHAR(4000),
@Logmsg NVARCHAR(4000)
SET @Logmsg = ‚_ Massagetext _‘
SET @cmd = ‚echo ’ + @Logmsg + ’ >> Filename.txt‘
EXEC master…xp_cmdshell @cmd
Sollte das xp_cmdshell nicht enabled sein, muss dies zuerst enabled werden. Dies funktioniert folgendermaßen:
EXEC sp_configure ‚show advanced options‘, 1
GO
RECONFIGURE
GO
EXEC sp_configure ‚master…xp_cmdshell‘, 1
GO
RECONFIGURE
GO
Hoffe es war euch eine Hilfe!!