SQL 解説書
ここでは、アプリケーション・プロセスの接続状態について概要を説明します。
接続状態
- アプリケーション・プロセスは、常に次の 4 つのいずれかの状態にあります。
- 接続可能 / 接続状態
- 接続不能で接続済み
- 接続可能 / 未接続状態
- 暗黙に接続可能 (暗黙接続が利用可能の場合)
暗黙の接続が可能な場合 (図 4 を参照)、
アプリケーション・プロセスは当初、
暗黙接続可能 状態になっています。
暗黙の接続が使用不能の場合 (図 5 を参照)、
アプリケーション・プロセスは当初、
接続可能・未接続 状態になっています。
暗黙接続の有効性は、導入オプション、環境変数と認証設定値によって決まります。
導入時の暗黙接続の設定については概説およびインストール を、
環境変数および認証設定値については管理の手引き を参照してください。
暗黙接続可能状態
- 暗黙の接続が可能な場合は、これがアプリケーション・プロセスの初期状態です。
CONNECT RESET ステートメントを使うと、この状態に移行します。
接続不可・接続済み状態で COMMIT または ROLLBACK ステートメントを発行した後、
接続可能・接続済み状態で DISCONNECT ステートメントを発行することによっても、
この暗黙接続可能状態に移行できます。
接続可能・接続済み状態
- アプリケーション・プロセスがアプリケーション・サーバーに接続されていて、
CONNECT ステートメントの実行が可能です。
暗黙の接続が可能な場合は以下のようになります。
- 接続可能・未接続状態で CONNECT TO ステートメントまたはオペランドなしの CONNECT ステートメントが正常に実行されると、
アプリケーション・プロセスは接続可能・接続済み状態になります。
- また、CONNECT RESET、DISCONNECT、SET CONNECTION、
または RELEASE ステートメント以外のステートメントが発行された場合も、
アプリケーション・プロセスは暗黙接続可能状態からこの接続可能・接続済み状態に移行することがあります。
暗黙の接続が可能か否かに関係なく、以下の場合にはこの接続可能・接続済み状態になります。
- 接続可能・未接続状態から CONNECT TO ステートメントが正常に実行された場合。
- 接続不可・接続済み状態から、COMMIT または ROLLBACK ステートメントが正常に発行されるか、
または強制的なロールバックが発生した場合。
接続不可・接続済み状態
- アプリケーション・プロセスはアプリケーション・サーバーに接続されていますが、
アプリケーション・サーバーを変更する CONNECT TO ステートメントを正常に実行することはできません。
アプリケーション・プロセスが、CONNECT TO、オペランドなしの CONNECT、
CONNECT RESET、DISCONNECT、SET CONNECTION、RELEASE、COMMIT、
ROLLBACK 以外の SQL ステートメントを実行すると、
接続可能・接続済み状態からこの接続不可・接続済み状態に移行します。
接続可能・未接続状態
- アプリケーション・プロセスはアプリケーション・サーバーに接続していません。
実行できる SQL ステートメントは CONNECT TO だけで、
それ以外を実行するとエラー (SQLSTATE 08003) になります。
暗黙の接続が可能かどうかにかかわらず、以下のようになります。
- アプリケーション・プロセスは、CONNECT TO ステートメントの発行時にエラーが発生するか、
または接続の消失とロールバックを引き起こすエラーが作業単位の中で発生した場合に、
この接続可能・未接続状態になります。
アプリケーション・プロセスが接続可能状態でないために発生したエラーや、
サーバー名がローカル・ディレクトリーのリストにないために発生したエラーでは、
この状態へは移行しません。
暗黙の接続が使用不能の場合は、以下のようになります。
- CONNECT RESET および DISCONNECT ステートメントが実行されると、
この接続可能・未接続状態へ移行します。
状態遷移 の様子を次の図に示します。
図 4. 暗黙的接続が使用可能な場合の接続状態の遷移
図 5. 暗黙の接続が使用不能な場合の接続状態の遷移
その他の規則
- 連続して複数の CONNECT ステートメントを実行することはエラーではありません。
これは、CONNECT 自体ではアプリケーション・プロセスの接続可能状態は終了しないためです。
- 連続的な CONNECT RESET ステートメントを実行するのはエラーです。
- CONNECT TO、CONNECT RESET、オペランドなしの CONNECT、
SET CONNECTION、RELEASE、COMMIT、ROLLBACK 以外の SQL ステートメントを実行した後、
CONNECT TO ステートメントを実行すると、エラーになります。
このエラーを回避するには、CONNECT TO の実行前に、
CONNECT RESET、DISCONNECT (COMMIT または ROLLBACK ステートメントの後)、
COMMIT、または ROLLBACK ステートメントを実行する必要があります。
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]