the*_*stv 5 sql sql-server try-catch
在我的程序中,我使用 try catch 块来捕获错误详细信息并记录到日志表中以供将来参考。但使用Error_message()它只能获取最后一条错误消息。
例如,执行以下代码时,它会生成两条错误消息
ALTER TABLE [MFClassProperty]
DROP CONSTRAINT [FK_MFClassProperty_MFProperty]
Run Code Online (Sandbox Code Playgroud)
错误消息是
Msg 3728, Level 16, State 1, Line 161
'FK_MFClassProperty_MFProperty2' is not a constraint.
Msg 3727, Level 16, State 0, Line 161
Could not drop constraint. See previous errors.
Run Code Online (Sandbox Code Playgroud)
使用我的 try catch 块,它只记录最后一条错误消息,通过该消息很难找到问题。
有没有办法获得这两个错误消息[在这种情况下]。
我的 catch 块代码添加在下面
BEGIN CATCH
ROLLBACK TRANSACTION
SET NOCOUNT ON
IF @Debug > 0
BEGIN
--------------------------------------------------
-- INSERTING ERROR DETAILS INTO LOG TABLE
--------------------------------------------------
INSERT INTO MFLog (
SPName
,ErrorNumber
,ErrorMessage
,ErrorProcedure
,ErrorState
,ErrorSeverity
,ErrorLine
,ProcedureStep
)
VALUES (
'spName'
,Error_number()
,Error_message()
,Error_procedure()
,Error_state()
,Error_severity()
,Error_line()
,@ProcessStep
)
END
END CATCH
Run Code Online (Sandbox Code Playgroud)
我相信这是 SQL Server 的限制,它只会返回最后一条错误消息。
从技术上讲,您收到两个错误:
因此,SQL Server 返回最后一个。即3727。
看看下面的线程: