CONNECT (タイプ 1) と CONNECT (タイプ 2) の相違点

CONNECT ステートメントには 2 つのタイプがあります。

それらは、構文は同じですが、意味が異なります。

  • CONNECT (タイプ 1) は、リモート作業単位に対して使用されます。リモート作業単位を参照してください。
  • CONNECT (タイプ 2) は、分散作業単位に対して使用されます。 CONNECT (タイプ 2)を参照してください。

次の表は、CONNECT (タイプ 1) と CONNECT (タイプ 2) の規則の相違点を要約しています。

表 1. CONNECT (タイプ 1) と CONNECT (タイプ 2) の相違点
タイプ 1 の規則 タイプ 2 の規則
CONNECT ステートメントは、活動化グループが接続可能状態である場合にのみ実行が可能です。 同じ作業単位内では、CONNECT ステートメントを複数実行することはできません。 同じ作業単位内で複数の CONNECT ステートメントを実行することができます。 接続可能状態に関する規則はありません。
該当のサーバー名がローカル・ディレクトリーにリストされていないことによって、CONNECT ステートメントが失敗した場合、その活動化グループの接続状態は変わりません。

該当の活動化グループが接続可能状態でないことによって、CONNECT ステートメントが失敗した場合、その活動化グループの SQL 接続状態は変わりません。

上記以外の理由で CONNECT ステートメントが失敗した場合、その活動化グループは未接続状態になります。

CONNECT ステートメントが失敗すると、現行 SQL 接続は変わらず、それ以後の SQL ステートメントはいずれも現行サーバーによって実行されます。
CONNECT は、その活動化グループの既存の接続をすべて終了させます。 したがって、CONNECT はまた、その活動化グループのオープン・カーソルをいずれもクローズします。 CONNECT は、接続の終了やカーソルのクローズを行いません。
現行サーバーに対する CONNECT は、他の CONNECT (タイプ 1) ステートメントと同じように実行されます。 現行サーバーに対する CONNECT はエラーの原因となります。

適用される CONNECT の規則の判別

プログラムによって行われる CONNECT のタイプの指定には、プログラム準備オプションが使用されます。プログラム準備オプションは、CRTSQLxxx コマンドの RDBCNNMTH パラメーターを使用して指定します。

リモート作業単位のみをサポートするサーバーへの接続

リモート作業単位のみをサポートするアプリケーション・サーバーへの CONNECT (タイプ 2) 接続は、読み取り専用の接続になる場合があります。

リモート作業単位のみをサポートするアプリケーション・サーバーに対して CONNECT (タイプ 2) を実行した場合:

  • その接続の時点で更新を許す休止状態の接続が存在する場合、 その接続では読み取り専用の操作が可能です。 この場合、その接続では更新は許されません。
  • これ以外の場合、その接続で更新が可能です。

分散作業単位をサポートするアプリケーション・サーバーに対して CONNECT (Type 2) を実行した場合:

  • リモート作業単位のみをサポートするアプリケーション・サーバーに対して更新を許可する休止状態の接続がある場合には、その接続では読み取り専用操作が可能です。この場合、その休止状態の接続が終了するとただちにその接続での更新が可能になります。
  • これ以外の場合、その接続で更新が可能です。
1 リモート作業単位のみをサポートするアプリケーション・サーバーの例としては、ネイティブ TCP/IP 用の初期 DRDA サポートを使用する Db2® for i があります。