SQL Raiseerror 成功结束?

问题描述 投票:0回答:1

有没有办法在 SQL Server 过程中使用 RAISEERROR 来引发错误,但仍然使过程“完成”成功?

现在我们有一个以 RAISERROR 结尾的过程,它会打印出某些内容的总数 - 这与我们的日志系统相关,因此每当发生引发错误时,它也会将其保存到日志文件中。 然后,我们在 Hangfire 中使用此日志文件来监控任何问题。

但问题是,由于 RAISEERROR 函数,该过程一直显示为“失败”。

代码片段:

    IF EXISTS (SELECT 1 FROM @UnprocessedCollaterals)
    BEGIN
        DECLARE @ErrorMessage NVARCHAR(MAX);
        
        DECLARE @Count int;
        SELECT @Count = COUNT(DISTINCT CollUpdProcessPK)
        FROM @Unprocessed;

            RAISERROR ('Total: %d', 16, 1, @Count);

    END;

我尝试这样做:

        BEGIN TRY
            RAISERROR ('Total: %d', 16, 1, @Count);
        END TRY
        BEGIN CATCH

        END CATCH

但是我相信这只是以 RAISEERROR 没有执行而结束,因为它没有出现在我们的日志中。

也许有不同的方法吗?

主要目标: 让 RAISEERROR 执行,但让 SQL 过程“成功”。

sql sql-server hangfire
1个回答
0
投票

评论中提出了很好的建议。

很明显,我们需要重写整个代码部分以更好地记录错误,但这必须等待我们有更多资源来做到这一点:)

最终的解决方案非常简单。不知道为什么我最初没有想到这一点。 将 RaiseError 的严重性更改为低于 10 可以达到我想要的效果。

谢谢大家!

© www.soinside.com 2019 - 2024. All rights reserved.