Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (A ~ D)

 

CONNECT 文 [ESQL] [Interactive SQL]

この文は、データベースへの接続を確立するために使用します。

構文 1
CONNECT
[ TO database-server-name ]
[ DATABASE database-name ]
[ AS connection-name ]
[ USER ] userid [ IDENTIFIED BY password ]
database-server-name, database-name, connection-name, userid, password :
{ identifier | string | hostvar }
構文 2
CONNECT USING connect-string
connect-string : { identifier | string | hostvar }
パラメータ
  • AS 句   オプションとして AS 句を指定して、接続に名前を付けることができます。名前を付けると、同じデータベースへの複数の接続、あるいは同じまたは異なるデータベース・サーバへの複数の接続が、すべて同時に行えるようになります。それぞれの接続には、固有のトランザクションがあります。たとえば、2 つの異なる接続から同じデータベース内の同じレコードを修正しようとする場合は、トランザクション間でロックの競合が起こることもあります。

構文 2   connect-string はセミコロンで区切った keyword=value 形式のパラメータ設定リストです。一重引用符で囲んでください。

接続文字列の詳細については、接続パラメータを参照してください。

備考

CONNECT 文は、database-server-name によって識別されるデータベース・サーバ上で稼働している、database-name によって識別されるデータベースへの接続を確立します。この文は、プロシージャ、トリガ、イベント、またはバッチではサポートされていません。

Embedded SQL の動作   Embedded SQL では、database-server-name を指定しない場合、デフォルトのローカル・データベース・サーバ (最初に起動するデータベース・サーバ) が使用されます。database-name を指定しない場合、指定されたサーバ上の最初のデータベースが使用されます。

WHENEVER 文、SET SQLCA 文、一部の DECLARE 文はコードを生成しないので、ソース・ファイル内の CONNECT 文の前に置いてもかまいません。それ以外の場合は、CONNECT 文が正しく実行されるまで、どのような文も使用できません。

ユーザ ID とパスワードを使って、動的 SQL 文ごとにパーミッションをチェックします。

接続アルゴリズムの詳細については、接続のトラブルシューティングを参照してください。

注意

SQL Anywhere の場合、Embedded SQL では構文 1 のみ有効です。Ultra Light の場合、Embedded SQL では構文 1 と構文 2 の両方を使用できます。

Interactive SQL の動作   CONNECT 文でデータベースまたはサーバを指定しない場合、Interactive SQL はデフォルトのサーバとデータベースには接続しないで、現在のデータベースとの接続を継続します。サーバ名を指定せずに、データベース名を指定する場合、Interactive SQL は現在のサーバの指定したデータベースに接続しようとします。データベース名を指定せずにサーバ名を指定する場合、Interactive SQL は指定したサーバのデフォルト・データベースに接続します。

たとえば、データベースに接続した状態で次のようなバッチを実行すると、同じデータベースに 2 つのテーブルが作成されます。

CREATE TABLE t1( c1 int );
CONNECT DBA IDENTIFIED BY sql;
CREATE TABLE t2 (c1 int );

CONNECT 文が正しく実行されるまで、他のデータベース文を使用できません。

Interactive SQL をウィンドウ・モードで実行している場合、接続パラメータが足りないというプロンプトが表示されます。

Interactive SQL がコマンド・プロンプト・モード (-nogui はコマンド・ラインから Interactive SQL を開始したときに指定します) またはバッチ・モードで実行中の場合、または AS 句を付けずに CONNECT を実行した場合は、無名の接続が開かれます。別の無名の接続がすでに開いている場合には、古い接続は自動的に閉じられます。それ以外の場合は、CONNECT を実行しても、既存の接続は閉じられません。

複数の接続も、現在の接続という概念を使って管理されます。接続文が成功した後、新しい接続が現在の接続になります。別の接続に切り替えるには、SET CONNECTION 文を使います。DISCONNECT 文を使って接続を切断することができます。

Interactive SQL に接続するとき、CONNECT [ USER ] userid を指定することは、SETUSER WITH OPTION userid 文を実行することと同じです。SETUSER 文を参照してください。

Interactive SQL では、接続情報 (データベース名、ユーザ ID、データベース・サーバなど) は、[SQL 文] ウィンドウ枠の上のタイトル・バーに表示されます。データベースに接続していない場合は、タイトル・バーに [未接続] と表示されます。

注意

Interactive SQL では構文 1 と構文 2 の両方が有効です。ただし、Interactive SQL は hostvar 引数をサポートしていないことに注意してください。

パーミッション

なし

関連する動作

なし

参照
標準と互換性
  • SQL/2003   構文 1 はコア SQL に含まれない SQL/基本機能です。構文 2 はベンダ拡張です。

次は、Embedded SQL 内での CONNECT 使用の例です。

EXEC SQL CONNECT AS :conn_name
USER :userid IDENTIFIED BY :password;
EXEC SQL CONNECT USER "DBA" IDENTIFIED BY "sql";

次の例では、SQL Anywhere サンプル・データベースが起動していることを前提としています。

Interactive SQL からデータベースに接続します。Interactive SQL がユーザ ID とパスワードを要求するプロンプトを表示します。

CONNECT;

DBA として Interactive SQL からデフォルト・データベースに接続します。Interactive SQL はパスワードを要求するプロンプトを表示します。

CONNECT USER "DBA";

DBA として Interactive SQL からサンプル・データベースに接続します。

CONNECT
TO demo11
USER DBA
IDENTIFIED BY sql;

接続文字列を使って Interactive SQL からサンプル・データベースに接続します。

CONNECT
USING 'UID=DBA;PWD=sql;DBN=demo';

サンプル・データベースに接続すると、タイトル・バーにデータベース名、ユーザ ID、データベース・サーバ名が demo (DBA) on demo11 と表示されます。