我在执行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的任何选项来监视此过程并捕获异常