Таблица ошибок SQL и хранимых процедур - PullRequest
0 голосов
/ 28 ноября 2008

У меня есть этот фрагмент кода, который я нашел в сети в конце каждой из моих хранимых процедур:

ROLLBACK TRANSACTION

         PRINT '-----START: ERROR DETAILS-----'
         PRINT ERROR_NUMBER()
         PRINT ERROR_SEVERITY()
         PRINT ERROR_STATE()
         PRINT ERROR_PROCEDURE()
         PRINT ERROR_LINE()
         PRINT ERROR_MESSAGE()
         PRINT '-----END: ERROR DETAILS-----'

            DECLARE @prmErrmsg NVARCHAR(4000);
            DECLARE @prmErrSvr INT;

            SELECT @prmErrmsg = ERROR_MESSAGE()
                ,@prmErrSvr = ERROR_SEVERITY();

            INSERT INTO dbo.myErrors
                        ([ErrorMessage]
                        ,[ErrorSeverity]
                        ,[DateCreated])
                 VALUES
                        (@prmErrmsg
                        ,@prmErrSvr
                        ,GetutcDate())


            RAISERROR(@prmErrmsg,@prmErrSvr,1)

Запись записей в таблицу myErrors, но не запись сообщения об ошибке или серьезности ошибки.

Мой первый вопрос: почему?

Я полагаю, что это связано с серьезностью ошибки в определенном диапазоне.

Как я могу сказать ему, чтобы протоколировать подробные сообщения об ошибках ВСЕГДА, независимо от серьезности?

1 Ответ

2 голосов
/ 28 ноября 2008

Согласно MSDN , ERROR_MESSAGE () и т. Д. Устанавливаются только в блоке CATCH оператора TRY ... CATCH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...