添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
指示超出了不可配置的数据库引擎限制并且当前批处理已终止。 严重级别为 19 或更高的错误消息将停止执行当前的批处理。 严重级别为 19 的错误很少,必须由系统管理员或主要支持提供商更正。 当引发严重级别为 19 的消息时,请与系统管理员联系。 严重级别从 19 到 25 的错误消息均写入错误日志。 20-24 指示系统问题并且是致命错误,这意味着正在执行某语句或批处理的数据库引擎任务已停止运行。 此任务记录了所发生事件的有关信息,然后终止。 在大多数情况下,应用程序与数据库引擎实例的连接也可能终止。 如果发生这种情况,该问题可能使应用程序无法重新连接。

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

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

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

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

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

可以使用 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)

错误严重性和 TRY...CATCH

TRY...CATCH 构造可捕捉所有严重级别大于 10 但不终止数据库连接的执行错误。

严重级别从 0 到 10 的错误是信息性消息,并不导致执行从 TRY...CATCH 构造的 CATCH 块中跳转。

终止数据库连接的错误(通常严重级别为 20 到 25)不由 CATCH 块处理,因为连接终止后执行也中止了。

有关详细信息,请参阅 TRY...CATCH (Transact-SQL)

检索错误严重性

系统函数 ERROR_SEVERITY 可用来检索导致 TRY...CATCH 构造的 CATCH 块运行的错误的严重性。 如果是在 CATCH 块的作用域之外调用 ERROR_SEVERITY,则 ERROR_SEVERITY 返回空值。 有关详细信息,请参阅 ERROR_SEVERITY (Transact-SQL)

  • 了解数据库引擎错误
  • sys.messages (Transact-SQL)
  • 系统函数 (Transact-SQL)
  • TRY...CATCH (Transact-SQL)
  •