由 Microsoft® SQL Server™ 2000 或 RAISERROR 语句产生的错误不是结果集的一部分。错误通过独立于结果集处理的错误处理机制返回给应用程序。
每个数据库 API 都包括一些函数、接口、方法、对象或结构的集合,通过这些集合返回错误和消息。每个 API 函数或方法通常返回表示操作成功的状态代码。如果此状态不是成功状态,则应用程序可以调用错误函数、方法或对象来检索错误信息。
实际上 SQL Server 有两种返回错误信息的机制:
错误
◆严重度为 11 或高于 11 的 sysmessages 中的错误。
◆严重度为 11 或高于 11 的任意 RAISERROR 语句。
邮件
◆PRINT 语句的输出。
◆几个 DBCC 语句的输出。
◆严重度为 10 或低于 10 的 sysmessages 中的错误。
◆严重度为 10 或低于 10 的任意 RAISERROR 语句。
ODBC 的错误处理
ODBC 规范引入的错误模型一直是一般数据库 API 的错误模型的基础,如 ADO、OLE DB 和通过 ODBC 建立的 API (RDO、DAO 和 MFC 数据库类)。在 ODBC 模型中,错误具有以下属性:
◆SQLSTATE
SQLSTATE 是一个 5 个字符的错误代码,它最初是在 ODBC 规范中定义的。SQLSTATE 对所有 ODBC 驱动程序是通用的,并为应用程序提供了对不同数据库返回的所有不同的错误代码进行无需测试的基本错误处理编码的方法。ODBC SQLSTATE 与 SQL Server 错误信息的状态属性无关。
ODBC 2.x 返回一个 SQLSTATE 代码的集合,ODBC 3.x 返回与 X/Open 数据管理并列的一组 SQLSTATE 代码:结构化查询语言 (SQL),标准版本 2。因为所有 ODBC 驱动程序都返回相同的 SQLSTATE 代码集合,所以将错误处理基于 SQLSTATE 代码的应用程序更易于移植。
◆本机错误号
本机错误号是来自基础数据库的错误号。ODBC 应用程序将收到的 SQL Server 错误号作为本机错误号。
◆错误信息字符串
错误信息通过错误信息字符串参数返回。
当 ODBC 函数返回的状态不是 SQL_SUCCESS 时,应用程序可以调用 SQLGetDiagRec 以获得错误信息。例如,如果 ODBC 应用程序收到一个语法错误(SQL Server 错误 170),则 SQLGetDiagRec 返回:
szSqlState = 42000, pfNative = 170 szErrorMsg = '[Microsoft][ODBC SQL Server Driver][SQL Server] Line 1: Incorrect syntax near * |
ODBC SQLGetDiagField 函数允许 ODBC 驱动程序在此驱动程序返回的诊断记录中指定驱动程序特定的诊断字段。SQL Server ODBC 驱动程序指定驱动程序特定的字段以放置 SQL Server 错误信息,如 SQL Server 严重度和状态代码。
最新相关文章
发表评论