尝试和RAISERROR在T-SQL(TRY and RAISERROR in T-SQL)

2019-09-19 01:06发布

有一个小问题,如果我正确地使用这些疑惑。

在我的SQL脚本是有

BEGIN TRY
    // check some information and if there are certains errors
    RAISERROR ('Errors found, please fix these errors and retry', 1, 2) WITH SETERROR

    // Complete normal process if no errors encountered above
    PRINT 'IMPORT SUCCEEDED'
END TRY
BEGIN CATCH
    PRINT 'IMPORT ABORTED. ERRORS ENCOUNTERED'
END CATCH

然而,这是遇到错误,然后用脚本的其余部分继续进行。 我在想什么? 谢谢!

Answer 1:

这是因为RAISERROR的严重程度还不够高,需要在11和19之间,如所描述这里

RAISERROR ('Errors found, please fix these errors and retry', 16, 2) WITH SETERROR


Answer 2:

我认为你需要一个严重级别高于10引发错误它被抓住,如

RAISERROR ('Errors found', 11, 2) WITH SETERROR


Answer 3:

从MSDN


严重

与此消息相关联的用户定义的严重级别。 从0严重性级别到18可以被任何用户使用。 从19到25之间的严重级别仅由sysadmin固定服务器角色的成员使用。 对于19到25之间的严重级别,在WITH LOG选项是必需的。

从20到25 注意事项严重级别被认为是致命的。 如果遇到致命的严重程度,所述客户端连接被接收到该消息之后,终止,并记录在错误日志和应用程序日志中的错误。


试试这个:

RAISERROR ('Errors found, please fix these errors and retry', 1, 2) WITH SETERROR
RETURN


文章来源: TRY and RAISERROR in T-SQL