基于 DBMS 的驱动程序诊断示例

基于 DBMS 的驱动程序将请求发送到 DBMS,并通过驱动程序管理器将信息返回到应用程序。 由于驱动程序是与驱动程序管理器接口的组件,因此它会格式化并返回 SQLGetDiagRec 的参数。

例如,如果使用 SQL/Services,适用于 Oracle Rdb 的 Microsoft 驱动程序遇到无效游标名称,它可能会从 SQLGetDiagRec 中返回以下值:

SQLSTATE:         "34000"  
Native Error:      0  
Diagnostic Msg:   "[Microsoft][ODBC Rdb Driver]Invalid cursor name: EMPLOYEE_CURSOR."  

由于驱动程序中出现错误,它向供应商 ([Microsoft]) 和驱动程序([ODBC dBASE 驱动程序])的诊断消息添加了前缀。

如果 DBMS 找不到 EMPLOYEE 表,驱动程序可能会格式化并从 SQLGetDiagRec 中返回以下值:

SQLSTATE:         "42S02"  
Native Error:      -1  
Diagnostic Msg:   "[Microsoft][ODBC Rdb Driver][Rdb] %SQL-F-RELNOTDEF, Table EMPLOYEE "  
                  "is not defined in schema."  

由于数据源中发生错误,驱动程序向诊断消息添加了数据源标识符 ([Rdb]) 的前缀。 由于驱动程序是与数据源接口的组件,因此它向诊断消息添加了供应商 ([Microsoft]) 和标识符 ([ODBC Rdb Driver]) 的前缀。