如何记录存储过程错误

时间:2020-03-06 14:46:08  来源:igfitidea点击:

场景:Capps使用SQL2000。它在应用程序的try catch中执行3个存储的proc。在捕获中,错误被抑制。由于某些合法性,因此无法更改和实现ccode。

问:如何将存储的proc中的实际SQL错误捕获到日志文件或者其他表中? @@ Error将错误消息返回到应用程序,但是在查询分析器中进行评估时,尽管" If @@ Error <> 0"会触发,但始终为0。我尝试存储@@ Error号,但始终为0。

请帮忙。

解决方案

尚无示例,但请看使用

RAISERROR ... WITH LOG

有关更多信息,请参见:http://msdn.microsoft.com/zh-cn/library/aa238452(SQL.80).aspx。

或者使用:

xp_logevent {error_number, 'message'} [, 'severity']

写入事件日志。有关更多详细信息,请访问http://msdn.microsoft.com/zh-cn/library/aa260695(SQL.80).aspx

选中时,将@@ ERROR重置为0。为什么?因为它反映了最后执行的语句的状态。

IF @@ERROR <> 0 ...

是一条语句,并且该语句成功,导致将@@ ERROR设置为0。

检查和操作@@ ERROR值的正确方法如下:

DECLARE @ErrorCode INT

INSERT INTO Table ...

SET @ErrorCode = @@ERROR
IF @ErrorCode <> 0
BEGIN
    INSERT INTO ErrorLog (ErrorCode, Message)
        VALUES (@ErrorCode, 'The INSERT operation failed.')
END

我自己没有尝试过,但是我想我们可以使用Sql Server Profiler监视错误。