16.5.4 拡張SQLエラー情報出力機能
クライアントエラーログ機能の情報に,SQL文,およびパラメタ情報を加えてSQLエラーレポートファイルに取得します。
SDBデータベースを操作するためのAPIまたはDMLの実行時にエラーが発生した場合,SQLエラー情報を参照すると,エラーの原因となる情報を特定できます。
SQLエラーレポートファイルは,取得した情報で満杯になると,もう一方のファイルに出力先を切り替えます。切り替わったファイルでも,これを繰り返しながら2つのファイルを交互に使用します(切り替え先の古い内容は削除されます)。
詳細については,マニュアル「HiRDB UAP開発ガイド」の「拡張SQLエラー情報出力機能」を参照してください。
- 〈この項の構成〉
(1) SQLエラー情報の見方
SDBデータベースを操作するAPIまたはDMLの実行時に出力されるSQLエラー情報の出力例を図16-6と図16-7に示します。
- [説明]
-
SQLエラー情報に出力される各項目については,マニュアル「HiRDB UAP開発ガイド」の「SQLエラー情報の見方」を参照してください。このとき,「SQL文」は,「SDBデータベースを操作するAPI」または「DML」に読み替えてください。
ただし,図16-6と図16-7で,枠で囲まれた部分の項目については,以下で説明します。
出力内容
説明
UAP
UAP情報
SVR
サーバ情報
-
サーバプロセスが動作しているホスト名(出力文字数は最大30バイト)
-
サーバプロセスの通信ポート番号(出力文字数は最大5バイト)
-
フロントエンドサーバのサーバ名(出力文字数は最大8バイト)
-
クライアントライブラリが対応しているプラットフォーム(出力文字数は最大6バイト)
SQLINF
SQL情報
-
SQL最適化オプションの値(10進数形式)(出力文字数は最大10バイト)
-
SQL拡張最適化オプションの値(10進数形式)(出力文字数は最大10バイト)
-
データ保証レベルの値(出力文字数は最大10バイト)
SQL
SDBデータベースを操作するAPIまたはDMLの実行時にはアスタリスク(*)が表示されます。
DMLINF
各エリアの情報
各エリアのサイズが表示されます。エリアサイズが0以下の場合は,エリア名とエリアサイズだけが表示されます。
各エリアの内容がダンプ形式で表示されます(1行に16バイト分が並びます)。同様のデータが2行以上続く場合は,「--- SAME n LINES ---"(nは行数)」が表示されます。ASCII文字はアスタリスク(*)で囲まれて表示されます。
*NO
SQLカウンタ
コネクト要求を1とし,SQL文,SDBデータベースを操作するAPI,またはDMLの実行1回ごとに1カウントアップした値が出力されます。
START TIME
DML要求開始時刻
HiRDBクライアントからフロントエンドサーバに,SDBデータベースを操作するAPIまたはDMLの実行要求を送信した時刻が,YYYY/MM/DD hh:mm:ssの形式で出力されます。
YYYY:年
MM:月
DD:日
hh:時
mm:分
ss:秒
END TIME
DML要求終了時刻
フロントエンドサーバからHiRDBクライアントに,SDBデータベースを操作するAPIまたはDMLの実行結果を返却した時刻が,YYYY/MM/DD hh:mm:ssの形式で出力されます。
YYYY:年
MM:月
DD:日
hh:時
mm:分
ss:秒
HNDCOM
共通エリアの内容
4VCNTROL
4V固有エリア(管理部)の内容
SDCNTROL
SD固有エリア(管理部)の内容
4VREQUEST※
4V固有エリア(要求部)の内容
SDREQUEST
SD固有エリア(要求部)の内容
KEYCONDITION※
キーの条件の条件ブロックエリアの内容
DATACONDITION※
キー以外の条件の条件ブロックエリアの内容
KEYVALUE※
キーの条件の値ブロックエリアの内容
DATAVALUE※
キー以外の条件の値ブロックエリアの内容
この項目で出力されるエリアダンプは,最大64バイトで打ち切られます。エリアサイズには,元々の値が出力されます。
INPUTDATA※
データ指定エリアの内容
STORDATA※
データ格納エリアの内容
この項目は,クライアント環境定義のPDUAPEXERLOGDMLDATAオペランドにYESを指定した場合に出力されます。
この項目で出力されるエリアダンプは,最大64バイトで打ち切られます。エリアサイズには,元々の値が出力されます。
ELMAREA※
構成要素指定エリアの内容
KEYREPORT※
キー報告エリアの内容
RESULTSAVE※
処理結果退避エリアの内容
RDAREANAME※
RDエリア名称格納エリアの内容
SDREQUEST2
SD固有エリア(要求部2)の内容
-
DMLINF以降の出力内容については,エラー発生時の要求およびクライアント環境定義のPDUAPEXERLOGDMLSZオペランドの指定値によって,次の情報に対応する内容が出力されます。DML履歴用バッファについては,「(2) DML履歴用バッファ」を参照してください。
-
SQLでのエラー発生時(PDUAPEXERLOGDMLSZ>0の場合)
DML履歴用バッファに記録されたSDBデータベースを操作するAPIまたはDMLの入力情報が出力されます。「図16-6 SQLエラー情報の出力例(4V FMBのSDBデータベースの場合)」または「図16-7 SQLエラー情報の出力例(SD FMBのSDBデータベースの場合)」の出力例の[2]が該当します。
-
SQLでのエラー発生時(PDUAPEXERLOGDMLSZ=0の場合)
出力されません。DMLINFの文字列も出力されません。
-
SDBデータベースを操作するAPIまたはDMLでのエラー発生時(PDUAPEXERLOGDMLSZ>0の場合)
エラー発生時のSDBデータベースを操作するAPIと,DML履歴用バッファに記録されたSDBデータベースを操作するAPIの入力情報が出力されます。
または,エラー発生時のDMLと,DML履歴用バッファに記録されたDMLの入力情報が出力されます。
「図16-6 SQLエラー情報の出力例(4V FMBのSDBデータベースの場合)」または「図16-7 SQLエラー情報の出力例(SD FMBのSDBデータベースの場合)」の出力例の[1]および[2]が該当します。
-
SDBデータベースを操作するAPIまたはDMLでのエラー発生時(PDUAPEXERLOGDMLSZ=0の場合)
エラー発生時のSDBデータベースを操作するAPIまたはDMLの入力情報が出力されます。「図16-6 SQLエラー情報の出力例(4V FMBのSDBデータベースの場合)」または「図16-7 SQLエラー情報の出力例(SD FMBのSDBデータベースの場合)」の出力例の[1]が該当します。
- 留意事項
-
クライアント環境定義のPDUAPERLOGオペランドに0以外の値を指定した場合,拡張SQLエラー情報の出力が途中で中断されて「--- DATA OMITTED ---」と出力されることがあります。この場合,「(2+PDUAPEXERLOGDMLSZオペランドの指定値)×5120」以上の値をPDUAPERLOGオペランドに指定してください。その結果,拡張SQLエラー情報が中断されないで出力されるようになります。
(2) DML履歴用バッファ
DML履歴用バッファとは,CONNECT文を要求してからDISCONNECT文が要求されるまでの間に入力された情報をクライアントライブラリ内に記録するバッファのことです。
SDBデータベースを操作するAPIまたはDMLが正常終了してフロントエンドサーバから実行結果が返却された際に,実行結果を反映した情報をバッファ内に記録します。このとき,バッファの空きがない場合は,古い情報から上書きして記録されます。
DML履歴用バッファの記録イメージを次の図に示します。
DML履歴用バッファに格納された情報は,SQL文,SDBデータベースを操作するAPI,またはDMLの実行時の拡張SQLエラー情報出力時にエリアダンプとして出力されます。「図16-6 SQLエラー情報の出力例(4V FMBのSDBデータベースの場合)」または「図16-7 SQLエラー情報の出力例(SD FMBのSDBデータベースの場合)」の出力例の[2]が該当します。
- 留意事項
-
エリアダンプの出力量が多くなるほど,拡張SQLエラー情報の出力に掛かる時間が増加します。SQL文,SDBデータベースを操作するAPI,またはDMLでエラーが発生した際の処理時間が,要求元のタイマ監視などで問題となる場合は,次の指定値を見直してください。
-
クライアント環境定義のPDUAPEXERLOGDMLSZ
DML履歴用バッファのサイズを小さくすると,エリアダンプの出力量が少なくなります。
-
クライアント環境定義のPDUAPERLOG
0以外の値を指定すると,エリアダンプの出力量が指定したサイズに制限されます。
-