17.2.2 トラブルシュートのポイント
- 〈この項の構成〉
(1) ODBCトレースを参照する際のポイント
ODBCトレースを参照することによって,ドライバマネージャが,APやBIツール,ODBCモジュールなどから受け付けた要求と,その返却内容を確認できます。
APやBIツール,ODBCモジュールなどは,ドライバマネージャからエラーが返却された場合,ODBC関数のSQLGetDiagFieldおよびSQLGetDiagRecを発行し,エラーの詳細情報を取得するのが一般的です。特に,SQLGetDiagRecで得られるSQLSTATE,NativeError,およびMessageTextは有用なトラブルシュート情報となります。
- メモ
-
ODBCトレースは,HADB ODBCドライバからの要求や返却内容を示すものではありません。
(2) メッセージテキストからエラー発生元を特定する際のポイント
メッセージテキストが出力されている場合,そのメッセージテキストから出力元を判別することができます。ポイントを次に示します。
-
メッセージテキスト中に,KFAAで始まるメッセージIDがないかを確認してください。さらに,メッセージテキスト中に,[Hitachi Advanced Data Binder] [ODBC Driver]タグがないかを確認してください。
上記の条件に該当する場合は,HADB(HADB ODBCドライバも含む)でエラーまたは警告が発生しています。
-
KFAAで始まるメッセージがKFAA72000番台の場合は,HADB ODBCドライバでエラーが発生しています。
-
上記以外のメッセージIDの場合は,HADBサーバまたはHADBクライアントでエラーが発生しています。
-
メッセージIDおよびタグが途中までしか出力されていない場合は,HADBサーバまたはHADBクライアントで処理が行われたと考えられます。この場合,各種トレースやログを確認して,完全なメッセージを取得してください。
-
-
メッセージテキスト中に,[Microsoft] [ODBC Driver Manager]タグがないかを確認してください。タグがある場合は,ドライバマネージャでエラーまたは警告が発生しています。
この場合,HADB(HADB ODBCドライバも含む)では処理が行われていない可能性が高いと考えられます。シーケンスエラーなど,致命的なエラーのケースが多く見られるため,APのデバッグ,BIツールまたはODBCモジュールの設定の見直しを行ってください。
-
上記の1,2で確認したキーワードがない場合は,ドライバマネージャおよびHADB(HADB ODBCドライバも含む)では処理が行われていない可能性が高いと考えられます。BIツールまたはODBCモジュールの設定で,使用するインタフェースやDBMSの指定に誤りなどがないか,設定を確認してください。
(3) SQLSTATEを参照する際のポイント
エラーの発生元を特定したあとに,SQLSTATEを確認してエラーの原因を特定します。
-
ドライバマネージャがエラーの発生元の場合
ドライバマネージャが返すSQLSTATEは,ODBCの実装規約に基づいています。MSDNライブラリのODBCプログラマーズリファレンスのODBC Error CodesにSQLSTATEの一覧があります。そこにエラー原因の簡単な説明と,SQLSTATEを返したODBC関数が説明されています。詳細な情報については,SQLSTATEとODBC関数を基に,ODBC API Referenceを参照して確認してください。
-
HADB ODBCドライバがエラーの発生元の場合
ODBC関数が返すSQLSTATEを確認して,エラーの原因を特定してください。
- メモ
-
HADB ODBCドライバが返すSQLSTATEは,ドライバマネージャが返すSQLSTATEと同様に,ODBCの実装規約に基づいています。より詳細にエラー原因を特定できる場合は,HADB独自のSQLSTATEを返しています。
-
HADBサーバまたはHADBクライアントがエラーの発生元の場合
HADBサーバまたはHADBクライアントが返すSQLSTATEは,HADBのメッセージと対応しています。SQLSTATEとHADBのメッセージの対応については,マニュアルHADB メッセージのSQLSTATEの一覧を参照してください。
対応しているメッセージの内容を確認して,エラーの原因を特定してください。
(4) SQLSTATEおよびメッセージテキストの取得方法
SQLSTATEおよびメッセージテキストは,次のODBC関数を実行して取得します。
-
SQLGetDiagField
-
SQLGetDiagFieldW
-
SQLGetDiagRec
-
SQLGetDiagRecW