网关诊断示例
在网关体系结构中,驱动程序会将请求发送到支持 ODBC 的网关。 网关会将请求发送到 DBMS。 因为它是与驱动程序管理器接口的组件,因此驱动程序将格式化并返回 SQLGetDiagRec 的参数。
例如,如果 Oracle 将 Rdb 的网关基于 Microsoft 开放数据服务之上,如果 Rdb 找不到表 EMPLOYEE,则网关可能会生成此诊断消息:
"[42S02][-1][DEC][ODS Gateway][Rdb]%SQL-F-RELNOTDEF, Table EMPLOYEE is not defined "
"in schema."
由于数据源中发生错误,网关向诊断消息添加了数据源标识符 ([Rdb]) 的前缀。 由于网关是与数据源接口的组件,因此它向诊断消息添加了供应商 ([DEC]) 和标识符([ODS 网关])的前缀。 它还将 SQLSTATE 值和 Rdb 错误代码添加到诊断消息的开头。 这允许它保留其自己的消息结构的语义,并且仍向驱动程序提供 ODBC 诊断信息。 驱动程序分析网关附加到错误语句的错误信息。
由于网关驱动程序是与驱动程序管理器接口的组件,因此它将使用前面的诊断消息格式化并返回 SQLGetDiagRec 中的以下值:
SQLSTATE: "42S02"
Native Error: -1
Diagnostic Msg: "[DEC][ODS Gateway][Rdb]%SQL-F-RELNOTDEF, Table EMPLOYEE is not "
"defined in schema."