ゲートウェイ診断の例
ゲートウェイ アーキテクチャでは、ドライバーは ODBC をサポートするゲートウェイに要求を送信します。 ゲートウェイは要求を DBMS に送信します。 ゲートウェイはドライバー マネージャーとインターフェイスするコンポーネントであるため、ドライバーは SQLGetDiagRec の引数を書式設定して返します。
たとえば、Oracle が Microsoft Open Data Services を Rdb へのゲートウェイのベースにしていて、Rdb が EMPLOYEE テーブルを見つけられなかった場合、ゲートウェイによって次の診断メッセージが生成されることがあります。
"[42S02][-1][DEC][ODS Gateway][Rdb]%SQL-F-RELNOTDEF, Table EMPLOYEE is not defined "
"in schema."
データ ソースでエラーが発生したため、ゲートウェイはデータ ソース識別子 ([Rdb]) のプレフィックスを診断メッセージに追加しました。 ゲートウェイはデータ ソースとインターフェイスするコンポーネントであるため、ベンダー ([DEC]) と識別子 ([ODS Gateway]) のプレフィックスを診断メッセージに追加しました。 また、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."