次の方法で共有


ゲートウェイ診断の例

ゲートウェイ アーキテクチャでは、ドライバーは 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."