处理数据库引擎错误

由 SQL Server 数据库引擎引起的很多错误都能以编程方式来捕获和解决。Transact-SQL 语言和应用程序用于访问存储在数据库引擎中的数据的数据访问应用程序编程接口 (API) 都提供了错误处理能力。

来自数据库引擎的错误可以在两种级别上处理:

  • 通过向 Transact-SQL 批处理、存储过程、触发器或用户定义函数添加错误处理代码,可以在数据库引擎中处理错误。

  • 错误可以返回到调用应用程序并在应用程序代码中进行处理。应用程序用于访问数据库引擎的每个 API 都提供了将错误信息传送回应用程序的机制。

主题

说明

了解数据库引擎错误

每个数据库引擎错误都包含以下属性:错误号、消息字符串、严重性、状态、过程名称和行号。

在 Transact-SQL 中检索错误信息

Transact-SQL 代码可以使用 ERROR_LINE、ERROR_MESSAGE、ERROR_NUMBER、ERROR_PROCEDURE、ERROR_SEVERITY、ERROR_STATE 和 @@ERROR 函数检索有关错误的信息。

TRY...CATCH (Transact-SQL)

使用与 Microsoft Visual C++ 和 Visual C# 语言的异常处理功能相似的 TRY...CATCH 构造处理 Transact-SQL 代码中的错误。当在 TRY 块中检测到错误条件时,控制被传递给能处理错误的 CATCH 块。

在 Transact-SQL 中使用 TRY...CATCH

使用与 Microsoft Visual C++ 和 Visual C# 语言的异常处理功能相似的 TRY...CATCH 构造处理 Transact-SQL 代码中的错误。当在 TRY 块中检测到错误条件时,控制被传递给能处理错误的 CATCH 块。

使用 RAISERROR

RAISERROR 语句可用于引发用户定义的错误。它也可以在 CATCH 块中使用,将在 CATCH 块中已处理的错误传递给应用程序。

使用 PRINT

PRINT 语句可用于将用户定义的消息返回到应用程序。

使用 @@ERROR

在早期版本的 SQL Server 中,@@ERROR 函数是检测 Transact-SQL 语句中的错误的主要手段。TRY...CATCH 构造提供了改善的功能。

处理应用程序中的错误和消息

每个数据访问 API,例如 ActiveX 数据对象 (ADO)、OLE DB 和开放式数据库连接 (ODBC),均具有向应用程序报告从数据库引擎接收到的任何错误信息的机制。

数据库引擎错误严重性

引发的数据库引擎错误和用户定义的错误消息具有不同程度的严重性(从 1 到 25)。sp_addmessage 和 RAISERROR 可用于生成用户定义错误消息。

请参阅

参考