SQLSERVER数据库引擎错误严重性和错误消息号大全

1. 查询 sys.messages 目录视图以返回具有英文文本 ( 数据库引擎 ) 的1033中所有系统和用户定义错误消息的列表。

SELECT
    message_id,
    language_id,
    severity,
    is_event_logged,
    text
  FROM sys.messages
  WHERE language_id = 1033;

2. 有关所有错误的完整列表,请使用以下查询查询 sys.databases 目录视图:

SELECT message_id AS Error, severity AS Severity,
[Event Logged] = CASE is_event_logged WHEN 0 THEN 'No' ELSE 'Yes' END,
text AS [Description]
FROM sys.messages
WHERE language_id = <desired language, such as 1033 for US English>
ORDER BY message_id

当错误是由 SQL Server 数据库引擎引起时,此错误的严重性可说明 SQL Server所遇到问题的类型。

3. 严重性级别

下表列出并说明 SQL Server 数据库引擎所引起错误的严重级别。

表 1

严重性级别 说明
0-9 返回不太严重的状态信息或报表错误的信息性消息。 数据库引擎 不会引起严重级别为 0 到 9 的系统错误。
10 返回不太严重的状态信息或报表错误的信息性消息。 由于兼容性原因, 数据库引擎 在将错误信息返回到调用应用程序前将严重性级别从 10 转换为 0。
11-16 指示可由用户纠正的错误。
11 指示给定的对象或实体不存在。
12 特殊严重性,用于因特殊查询提示而不使用锁定的查询。 在某些情况下,因为没有用锁保证一致性,由这些语句所执行的读取操作会产生不一致的数据。
13 指示事务死锁错误。
14 指示安全性相关错误,如权限被拒绝。
15 指示 Transact-SQL 命令中的语法错误。
16 指示可由用户纠正的常规错误。
17-19 指示无法由用户纠正的软件错误。 请将问题通知系统管理员。
17 指示语句导致 SQL Server 用尽资源(如数据库的内存、锁或磁盘空间)或超出了系统管理员设置的某些限制。
18 指示 数据库引擎 软件中有问题,但可完成执行语句,并且可维护到 数据库引擎 实例的连接。 每当出现严重级别为 18 的消息时均应通知系统管理员。
19 指示超出了不可配置的 数据库引擎 限制并且当前批处理已终止。 严重级别为 19 或更高的错误消息将停止执行当前的批处理。 严重级别为 19 的错误很少,必须由系统管理员或主要支持提供商更正。 当引发严重级别为 19 的消息时,请与系统管理员联系。 严重级别从 19 到 25 的错误消息均写入错误日志。
20-24 指示系统问题并且是致命错误,这意味着正在执行某语句或批处理的数据库引擎任务已停止运行。此任务记录了所发生事件的有关信息,然后终止。在大多数情况下,应用程序与数据库引擎实例的连接也可能终止。如果发生这种情况,该问题可能使应用程序无法重新连接。

此范围内的错误消息可以影响同一数据库中所有正在访问数据的进程,并可能指示数据库或对象已损坏。严重级别从19到24的错误消息均写入错误日志。
20 指示语句遇到了问题。由于该问题只影响了当前任务,数据库本身未必已经损坏。
21 指示遇到了影响当前数据库中所有任务的问题,但数据库本身未必已经损坏。
22 指示消息中所指定的表或索引因软件或硬件问题而损坏。

很少发生严重级别为22的错误。如果发生这种错误,请运行DBCC CHECKDB以确定数据库中的其他对象是否也已损坏。这种问题可能只是出现在缓存中而不存在于磁盘本身。如果发生此错误,请重新启动数据库引擎实例更正此问题。若要继续工作,则必须重新连接到数据库引擎实例;否则,请使用DBCC修复该问题。在某些情况下,可能需要还原数据库。

如果重新启动数据库引擎的实例不能解决此问题,那么问题就是出在磁盘上。有时,销毁错误消息中指定的对象可以解决此问题。例如,如果消息报告数据库引擎的实例在非聚集索引中发现了长度为0的行,则请删除该索引并重建。
23 指示整个数据库的完整性因硬件或软件问题而出现问题。

很少发生严重级别为23的错误。如果发生这种错误,请运行DBCC CHECKDB以确定损坏的程度。这种问题可能只是出现在缓存中而未出现在磁盘本身。如果发生此错误,请重新启动数据库引擎实例更正此问题。若要继续工作,则必须重新连接到数据库引擎实例;否则,请使用DBCC修复该问题。在某些情况下,可能需要还原数据库。
24 指示介质故障。系统管理员可能需要还原数据库。您可能还需要致电硬件供应商。

4. 用户定义的错误消息严重性

可以使用 sp_addmessage 将严重级别为 1 到 25 的用户定义错误消息添加到 sys.messages 目录视图中。 这些用户定义的错误消息可供 RAISERROR 使用。 有关详细信息,请参阅 sp_addmessage (Transact-SQL)。

可用 RAISERROR 生成严重性级别为 1 到 25 的用户定义错误消息。 RAISERROR 可以引用 sys.messages 目录视图中存储的用户定义错误消息,也可以动态地生成消息。 生成错误时如果使用 sys.messages 中的用户定义错误消息,则 RAISERROR 指定的严重级别将覆盖 sys.messages中指定的严重级别。 有关详细信息,请参阅 RAISERROR (Transact-SQL)。

5. 错误消息号和对应说明(all)

从错误号2开始,一直到错误号41400

https://docs.microsoft.com/zh-cn/sql/relational-databases/errors-events/database-engine-events-and-errors?view=sql-server-ver15

Copyright © 2025-2026 www.dbnotes.cn. All rights reserved. 该文件修订时间: 2026-04-01 19:41:00

results matching ""

    No results matching ""