疑难解答SQL存储过程

我在执行SQL存储过程时看到一个奇怪的问题。 以下是存储过程的格式:

CREATE PROC abc
(
  @status int=0 output
)
AS
BEGIN TRY

--Does some transactions 

END TRY
BEGIN CATCH
SET @status=-1
END CATCH

return @status

我知道我应该在catch块中添加/记录更多的细节,如错误号,错误消息等,但我没有意识到会发生这样的问题。 目前,生产中的存储过程有时会返回-1状态。 奇怪的部分是try块中的所有事务都已成功提交。 我不明白为什么程序进入catch块。 我试图用成功完成的相同数据手动执行该过程,并返回status = 0。 我在测试环境中添加了额外的日志记录,并测试了300多次,但无法重现此问题。 在生产中,我不允许做任何改变。 因此,我要求我们的DBA启用跟踪日志记录,但是这并没有帮助我们获取任何异常详细信息。

如果有任何方法可以解决此问题,我将非常感激。 DBA还有任何选项可以监视此过程并捕获异常

链接地址: http://www.djcxy.com/p/71583.html

上一篇: Troubleshooting SQL Stored Procedure

下一篇: interrupt execution of stored procedure