处理数据库引擎错误

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

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

  • 通过向 Transact-SQL 批处理、存储过程、触发器或用户定义函数添加错误处理代码,可以在数据库引擎中处理错误。Transact-SQL 错误处理机制包括 TRY...CATCH 构造(请参阅 TRY...CATCH (Transact-SQL))、RAISERROR 语句和 @@ERROR 函数。
  • 错误可以返回到调用应用程序并在应用程序代码中进行处理。应用程序用于访问数据库引擎的每个 API 都提供了将错误信息传送回应用程序的机制。
主题 说明

了解数据库引擎错误

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

在 Transact-SQL 中检索错误信息

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

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

SQL Server 2005 通过使用与 Microsoft Visual C++ 和 Visual C# 语言的异常处理功能相似的 TRY...CATCH 构造,在 Transact-SQL 代码中引入了处理错误的功能。当在 TRY 块中检测到错误条件时,控制被传递给能处理错误的 CATCH 块。这是 SQL Server 2005 数据库引擎中处理错误的主要机制。

使用 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 可用于生成用户定义错误消息。

请参阅

其他资源

sys.messages (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助