如何记录存储过程错误
时间: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监视错误。