File erzeugen und Errorhandling in MS SQL

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.

  1. wie ist es bei MS SQL (T-SQL) möglich, ein File mit gewissen Inhalten zu schreiben (Errorhandling)

  2. 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

  1. 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

  1. 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!!