CONNECT (タイプ 1) ステートメントは、リモート作業単位の規則に従って、 指定したアプリケーション・サーバーにアプリケーション・プロセスを接続します。
1 つのアプリケーション・プロセスは、 一時点で 1 つのアプリケーション・サーバーにのみ接続できます。 これは、現行サーバー と呼ばれます。 デフォルトのアプリケーション・サーバーは、 アプリケーション・リクエスターの初期設定時に確立されます。 暗黙接続が使用可能な場合にアプリケーション・プロセスが開始されると、 暗黙にデフォルトのそのアプリケーション・プロセスに接続されます。 そのアプリケーション・プロセスで CONNECT TO ステートメントを使用することによって、 それとは別のアプリケーション・サーバーに明示的に接続することもできます。 接続は、CONNECT RESET ステートメント、または DISCONNECT が出されるまで、 あるいは別の CONNECT TO ステートメントによってアプリケーション・サーバーが変更されるまで継続します。
接続状態の概念と詳細については、リモート作業単位の接続管理 を参照してください。 CONNECT の機能の枠組みを決めるプリコンパイラー・オプションについては、 分散作業単位の意味を制御するオプション を参照してください。
対話式 SQL 機能には外見上対話式の実行に見えるインターフェースが用意されている場合がありますが、 このステートメントはアプリケーション・プログラムに組み込むことだけが可能です。 これは、動的に準備できない実行可能ステートメントです。
このステートメントの許可 ID には、 指定されたアプリケーション・サーバーに接続するための許可が必要です。 データベースの認証の設定値によっては、 クライアントまたはサーバーのいずれかによって許可検査が行われる場合があります。 区分データベースの場合、ユーザーとグループの定義は、 区分またはノードのすべてにわたって同一である必要があります。 認証設定値については、 管理の手引き の AUTHENTICATION データベース・マネージャー構成パラメーターの項を参照してください。
>>-CONNECT------------------------------------------------------> >-----+------------------------------------------------------------------------+> +-TO--+-server-name---+---+------------------+---+---------------------+-+ | '-host-variable-' '-| lock-block |--' '-| authorization |--' | +-RESET------------------------------------------------------------------+ | (1) | '-| authorization |-----------------------------------------------------' >-------------------------------------------------------------->< authorization |---USER----+-authorization-name-+--USING----+-password------+--> '-host-variable------' '-host-variable-' >-----+---------------------------------------------+-----------| '-NEW--+-password------+---CONFIRM--password--' '-host-variable-' lock-block .-IN SHARE MODE--------------------------. |---+----------------------------------------+------------------| '-IN EXCLUSIVE MODE--+----------------+--' '-ON SINGLE NODE-'
注:
説明
接続状態が存在する場合、 許可 ID とデータベース別名が、SQLCA の SQLERRMC フィールドに入れられます。 権限 ID が 8 バイトを超える場合、これは 8 バイトに切り捨てられ、 SQLCA の SQLWARN0 および SQLWARN1 フィールドにそれぞれ 'W' と 'A' のフラグが付きます。 データベース構成パラメーター DYN_QUERY_MGMT が使用可能の場合、 SQLCA の SQLWARN0 および SQLWARN7 フィールドにはそれぞれ 'W' と 'E' のフラグが付きます。
接続が存在せず、暗黙接続が可能な場合は、暗黙接続が試みられます。 暗黙接続が使用可能でない場合、この試みはエラーになります (既存の接続がない)。 接続がない場合、SQLERRMC フィールドはブランクになります。
アプリケーション・サーバーの国別コードとコード・ページは、 SQLERRMC フィールドに入れられます (正常に実行される CONNECT TO ステートメントの場合と同じ)。
この形式の CONNECT を使用する場合、
host-variable (ホスト変数) を指定する場合、 それは、長さ属性が 8 以下の文字ストリング変数でなければならず、 標識変数を含めることはできません。 その host-variable に入っている server-name は、 左寄せする必要があり、引用符で区切ることはできません。
server-name は、 アプリケーション・サーバーを指定するデータベース別名である点に注意してください。 この名前は、アプリケーション・リクエスターの ローカル・ディレクトリーにリストされている必要があります。
注: | DB2 (MVS 版) では 16 バイトのロケーション名がサポートされており、 SQL/DS と DB2/400 ではいずれも 18 バイトの宛先データベース名がサポートされます。 DB2 バージョン 7 では、 SQL CONNECT ステートメントに対して 8 バイトのデータベース別名を使用することだけがサポートされています。 ただし、データベース別名は、データベース接続サービス・ディレクトリーによって、 18 バイトのデータベース名にマッピングすることができます。 |
CONNECT TO ステートメントが実行される時点で、 アプリケーション・プロセスは接続可能状態でなければなりません (タイプ 1 CONNECT の接続状態については、 リモート作業単位の接続管理を参照してください。)
CONNECT TO ステートメントが正常に実行された場合、
たとえば、アプリケーション・サーバーが DB2 (OS/2 版) のバージョン 1 リリース 1 の場合、 SQLERRP の値は 'SQL01010' になります。 66
認証タイプの詳細については、 管理の手引き の『データベース・アクセスの制御』を参照してください。
CONNECT TO ステートメントが正常に実行されなかった場合、
例
例 1: C プログラムで、ユーザー ID FERMAT とパスワード THEOREM を使用して、 アプリケーション・サーバー TOROLAB3 に接続します。 ここで、TOROLAB3 は同じ名前のデータベース別名です。
EXEC SQL CONNECT TO TOROLAB3 USER FERMAT USING THEOREM;
例 2: C プログラムで、 データベース名がホスト変数 APP_SERVER (varchar(8)) に入っているアプリケーション・サーバーに接続します。 正常に接続された後、アプリケーション・サーバーの 3 文字の製品識別子を、 変数 PRODUCT (char(3)) にコピーします。
EXEC SQL CONNECT TO :APP_SERVER; if (strncmp(SQLSTATE,'00000',5)) strncpy(PRODUCT,sqlca.sqlerrp,3);