QUESTION(SQ0105013)
「一般エラー:prepared statementsのリソース・ガバナーが制限を越えています」の回避
ANSWER
repared Statementは、準備文です。準備文は、アプリで使用する SQL 文をあらかじめメモリ内に保持したものです。
ODBC 命令 SQLAllocStatement でステートメント・ハンドル(準備文へのポインタ)を取得し、SQLPrepare にて実際にSQL 文が作成されます。また、ステートメント・ハンドルの使用後は、SQLFreeStatementで開放します。
MAX_STATEMENT_COUNT で管理しているのはステートメント・ハンドルの数ですので、MAX_STATEMENT_COUNTの制限によるエラーが発生するのは、SQLAllocStatement 実行時だと考えられます。
ハンドルの開放は Close メソッドで実行されると思われます。Close メソッドをもつオブジェクトは、必ず使用後に
Closeするようお勧めいたします。
MAX_STATEMENT_COUNTに0を設定した場合、リソースの制限をなくすことができますが、リソースの制限をなくした場合、メモリを使い果たしてシステムが不安定になるような場合も考えられます。このため、アプリケーションで使用されるおおよそのステートメント・ハンドル数にあわせて設定を行われることをお勧めいたします。
Anywhere のデータベース・サーバにて保持されているカーソルなどの数についての情報は、dbisqlより以下のような方法で調べることができます。
-
・select connection_property('Cursor')
-
- 現在サーバによって維持されている宣言されたカーソルの数を表示
-
・select
connection_property('CursorOpen')
-
- 現在サーバによって維持されているオープンしているカーソルの数
-
・select
connection_property('PrepStmt')
-
- 現在サーバによって維持されている準備文の数
|