在我的程序中使用try catch块来捕获错误详细信息并登录到Log to table以供将来参考。但是使用Error_message()
只获取最后一条错误消息。
例如,在执行下面的代码时,它会生成两条错误消息
ALTER TABLE [MFClassProperty]
DROP CONSTRAINT [FK_MFClassProperty_MFProperty]
错误消息
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.
使用我的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
答案 0 :(得分:0)
我认为这是SQL Server的一个限制,它只会返回上一条错误消息。
从技术上讲,您收到两个错误:
SQL Server因此返回最后一个。即 3727 。
看看以下主题: