Search code examples
sql-serverraiserror

What do the different RAISERROR severity levels mean?


My best google result was this:

  • below 11 are warnings, not errors
  • 11-16 are available for use
  • above 16 are system errors
  • there is no behavioral difference among 11-16

But, from BOL, "Severity levels from 0 through 18 can be specified by any user."

In my particular stored procedure, I want the error returned to a .Net client application, so it looks like any severity level between 11-18 would do the trick. Does anyone have any authoritative information about what each of the levels mean, and how they should be used?


Solution

  • Database Engine Severity Levels

    You should return 16. Is the default, most used error level:

    Indicates general errors that can be corrected by the user.

    Don't return 17-18, those indicate more severe errors, like resource problems:

    Indicate software errors that cannot be corrected by the user. Inform your system administrator of the problem.

    Also don't return 11-15 because those have a special meaning attached to each level (14 - security access, 15 - syntax error, 13 - deadlock etc).

    Level 16 does not terminate execution.

    When your intention is to log a warning but continue execution, use a severity level below 10 instead.