4 Stimmen

TRY CATCH mit verknüpftem Server in SQL Server 2005 funktioniert nicht

Ich versuche, Sql-Fehler abzufangen, wenn ich eine gespeicherte Prozedur auf einem verknüpften Server ausführe. Auf beiden Servern läuft SQL Server 2005.

Um das Problem zu beweisen, habe ich eine gespeicherte Prozedur auf dem verknüpften Server namens Raise error erstellt, die den folgenden Code ausführt:

RAISERROR('An error', 16, 1);

Wenn ich die gespeicherte Prozedur direkt auf dem verknüpften Server mit dem folgenden Code ausführe, erhalte ich eine Ergebnismenge mit 'An error', '16' wie erwartet (d.h. der Code tritt in den Catch-Block ein):

BEGIN TRY
EXEC [dbo].[RaiseError];
END TRY
BEGIN CATCH
    DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int;
    SELECT @ErrMsg = ERROR_MESSAGE(), @ErrSeverity = ERROR_SEVERITY();
    SELECT @ErrMsg, @ErrSeverity;
END CATCH

Wenn ich den folgenden Code auf meinem lokalen Server ausführe, um die gespeicherte Prozedur auf dem verknüpften Server auszuführen, gibt mir SSMS die Meldung 'Query completed with errors', Msg 50000, Level 16, State 1, Procedure RaiseError, Line 13 Ein Fehler'

BEGIN TRY
    EXEC [Server].[Catalog].[dbo].RaiseError
END TRY
BEGIN CATCH
    DECLARE @SPErrMsg nvarchar(4000), @SPErrSeverity int;
    SELECT @SPErrMsg = ERROR_MESSAGE(), @SPErrSeverity = ERROR_SEVERITY();
    SELECT @SPErrMsg, @SPErrSeverity;
END CATCH

Meine Frage ist, kann ich den Fehler abfangen, der erzeugt wird, wenn die verknüpfte Server gespeicherte Prozedur ausgeführt wird?

Vielen Dank im Voraus!

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