T-SQL中的严重性和状态如何在实践中实际使用?

Son*_*ali 10 sql-server

我们RAISERROR在SQL Server中使用.语法是RAISERROR('Some Message.', 16, 1).

有什么用的参数值16,并1RAISERROR()在我的例子吗?我在网上搜索,发现这些参数称为SeverityState.文档告诉我们这些值的一些深奥含义,但没有给我们如何使用它们或为什么提供良好的指导.

我想知道的是什么意思SeverityState?它们应该如何使用?

M.A*_*Ali 11

错误状态用于指出代码中发生错误的位置.假如你有一个1000行的存储过程并且你在不同的地方引发错误,错误状态将帮助你告诉实际引发了哪个错误.

Error Severity提供有关发生的错误类型的信息,

严重级别10是信息性消息.

11-16被认为是可以由用户修复的错误.

17-19被认为是Sql Server资源,引擎和其他东西中的非致命错误.

20-25被认为是致命错误,导致sql server立即关闭进程.


Raj*_*Raj 4

根据文档RAISERROR

严重性

是与此消息关联的用户定义的严重性级别。当用于msg_id引发使用 sp_addmessage 创建的用户定义消息时,指定的严重性RAISERROR将覆盖指定的严重性sp_addmessage

任何用户都可以指定从 0 到 18 的严重级别。从 19 到 25 的严重级别只能由 sysadmin 固定服务器角色的成员或具有权限的用户指定ALTER TRACE。对于从 19 到 25 的严重级别,该WITH LOG选项是必需的。小于 0 的严重级别被解释为 0。大于 25 的严重级别被解释为 25。

状态

是 0 到 255 之间的整数。负值默认为 1。不应使用大于 255 的值。

如果在多个位置引发相同的用户定义错误,则为每个位置使用唯一的状态编号可以帮助找到引发错误的代码部分。