由 Microsoft SQL Server 数据库引擎 引起的错误具有下表所述的属性。
| Attribute | 说明 |
|---|---|
| 错误号 | 每个错误消息具有唯一的错误号。 |
| 错误消息字符串 | 错误消息包含关于错误原因的诊断信息。 许多错误消息都有替换变量,其中插入了一些信息,如生成错误的对象名称。 |
| 严重性 | 严重性指示错误的严重程度。 严重性较低的错误,如 1 级或 2 级,为信息性消息或低级警告。 严重性较高的错误指示需要尽快解决的问题。 有关错误严重性的详细信息,请参阅 数据库引擎错误严重性。 |
| 状态 | 某些错误消息可能在 数据库引擎代码中多处出现。 例如,几种不同情况下都可能引发 1105 错误。 每个引发错误的特定情况都分配唯一的状态代码。 查看包含已知问题信息的数据库时,如 Microsoft 知识库,可以使用状态号确定所记录的问题是否与曾遇到的错误相同。 例如,如果一篇知识库文章说明状态为 2 的 1105 错误,而接收到的 1105 错误消息状态为 3,则错误原因可能不同于文章所报告的原因。 Microsoft 支持工程师也可以用错误中的状态代码在源代码中查找产生错误的位置。 此信息可能会获取诊断问题所需的更多信息。 |
| 过程名称 | 出现错误的存储过程或触发器的名称。 |
| 行号 | 指示在批处理、存储过程、触发器或函数中生成错误的语句。 |
数据库引擎 实例中所有系统和用户定义的错误消息都包含在 sys.messages 目录视图中。 可以使用 RAISERROR 语句将用户定义的错误返回到应用程序。
所有数据库 API(如 Microsoft .NET Framework SQLClient 命名空间、ActiveX 数据对象 (ADO)、OLE DB 和开放式数据库连接 (ODBC))都会报告基本错误属性。 此信息包括错误号和消息字符串。 但是,并非所有 API 都报告所有其他错误属性。
可以在 Transact-SQL 代码中使用一些函数(如相关 CATCH 块作用域内的 ERROR_LINE、ERROR_MESSAGE、ERROR_NUMBER、ERROR_PROCEDURE、ERROR_SEVERITY 和 ERROR_STATE),来获得关于发生在 TRY…CATCH 结构的 TRY 块作用域内的错误信息。 有关详细信息,请参阅 TRY...CATCH (Transact-SQL)。
示例
下面的示例将查询 sys.messages 目录视图以返回具有英文文本 ( 数据库引擎 ) 的1033中所有系统和用户定义错误消息的列表。
SELECT
message_id,
language_id,
severity,
is_event_logged,
text
FROM sys.messages
WHERE language_id = 1033; 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




