ページの先頭行へ戻る
Symfoware Server V10.0.0 トラブルシューティング集

2.1.2 運用時の異常

運用時に発生したトラブルの事例、およびその対処方法について説明します。

クライアントの画面で、メッセージ JYP2008E が出力される

クライアントの画面で、サーバから以下のメッセージが出力されることがあります。

SQL-STATE=71020 JYP2008E 同時に操作できるSQL文の数を超えました.
【対処方法】

以下の2つの場合が考えられます。

  • 1トランザクション内でのSQL文の実行数が32を超えた

  • 動的SQLでSQL文識別子を利用しており、SQL文識別子の数が32を超えた

この場合の対処方法としては、“MAX_SQL”または“CLI_MAX_SQL”に、32以上32000以下の値を指定するようにしてください。なお、初期値は1024に設定されています。

参照

  • “MAX_SQL”の詳細は、“アプリケーション開発ガイド(共通編)”の“クライアント用の動作環境ファイル”、または、“アプリケーション開発ガイド(.NET Data Provider編)”の“tuneparamキーワード”を参照してください。

  • “CLI_MAX_SQL”の詳細は、“アプリケーション開発ガイド(JDBCドライバ編)”の“ctuneparamオプションについて”、または、“アプリケーション開発ガイド(ODBCドライバ編)”の“アプリケーションのチューニング”を参照してください。

ポイント

動的SQLの「SQL文識別子」を利用した場合とRDA接続の場合について
動的SQLでSQL文識別子を利用した場合、SQL文識別子は、トランザクションとは関係なく“DEALLOCATE PREPARE文”実行時に解放されます。したがって、SQLの数はSQL文識別子の数となります。
つまり、「SQL文識別子数=<MAX_SQL値」である必要があります。
ただし、RDA接続時に設定できるMAX_SQLの上限値は32です。
RDA接続時に同一トランザクション内で同時に操作するSQL文の数が32個を超えた場合には、“RDA2019:使用できるカーソル数の制限値を超えています”というエラーになります。

UPDATE文を実行すると、メッセージ JYP6015E が出力される

「SET=<値式>」の<値式>中に問合せ指定(SELECT文)を記述するようなUPDATE文は、Symfoware/RDBではサポートしてないため、以下のエラーが出力されます。

JYP6015E UPDATE文の設定句に副問合せが指定されました.
【対処方法】

SELECT文の結果を一度変数に格納してから、UPDATE文を実行することで、回避してください。

“UPDATE TABLE_ABC SET A = (SELECT X FROM TABLE_XYZ WHERE Y=1111)”というSQL文を実行する代わりに、以下の手順でSQL文を実行します。

  1. “SELECT X FROM TABLE_XYZ WHERE Y=1111”の結果を、変数“MM”に取り込みます。

  2. “UPDATE TABLE_ABC SET A = :MM”を実行します。