Caché データベースへの接続
この章では、CacheConnection オブジェクトを使用して、ユーザのクライアント・アプリケーションと Caché Server との間に接続を作成する方法について説明します。この接続は、Caché オブジェクト・バインディング・クラスと ADO.NET Managed Provider クラスの両方で使用されます。
接続の作成
以下のコードは、ほとんどの Caché サンプル・プログラム (詳細は、“Caché .NET サンプル・プログラム” を参照) で使用する SAMPLES ネームスペースへの接続を確立します。接続オブジェクトは、Caché オブジェクト・バインディング・クラスまたは ADO.NET Managed Provider クラス、あるいはその両方を使用しているかどうかにかかわらず、Caché 接続が必要なすべてのクラスで使用できます。接続オブジェクトをインスタンス化する場合に設定できるパラメータの完全なリストについては、“接続パラメータ” を参照してください。
以下の簡単なメソッドを呼び出して接続を開始します。
public CacheConnection CacheConnect;
private void CreateConnection(){
try {
CacheConnect = new CacheConnection();
CacheConnect.ConnectionString =
"Server=localhost; Port=1972; Namespace=SAMPLES;"
+ "Password=SYS; User ID=_SYSTEM;";
CacheConnect.Open();
}
catch (Exception eConn){
MessageBox.Show("CreateConnection error: " + eConn.Message);
}
}
この例は、プログラムのどの場所でも使用できるグローバルとして CacheConnection オブジェクトを定義しています。このオブジェクトを作成しておくと、そのオブジェクトを必要とするすべてのクラス間で共有できます。接続オブジェクトは、必要に応じて開いたり閉じたりできます。この操作は、CacheConnect.Open() および CacheConnect.Close() を使用して明示的に実行できます。ADO.NET の Dataset を使用している場合は、DataAdapter のインスタンスにより、必要に応じて自動的に接続が開閉します。
接続文字列の入力をユーザに要求することもできます。その場合は、前述の例を以下のように書き換えます。
private void CreateConnection(){
try {
CacheConnect = new CacheConnection();
CacheConnect.ConnectionString = CacheConnection.ConnectDlg();
CacheConnect.Open();
}
...
ConnectDlg() メソッドは、Caché の標準接続ダイアログを表示して、ユーザの入力を接続文字列として返します。
接続プーリング
接続プーリングは既定で有効になっています。以下の接続文字列パラメータを使用すると、接続プーリングのさまざまな機能を制御できます。
-
Pooling — 既定は true です。接続プーリングを使用しない接続を作成するには、Pooling を false に設定します。
-
Max Pool Size および Min Pool Size 既定値は 0 および 100 です。これらのパラメータを設定すると、この特定の接続文字列に対して接続プールの最大および最小 (初期) サイズを指定できます。
-
Connection Reset および Connection Lifetime — Connection Reset を true に設定すると、プールされた接続のリセット・メカニズムが有効になります。Connection Lifetime は、アイドル状態のプールされた接続をリセットするまで待機する秒数を指定します。既定値は 0 です。
例えば以下の接続文字列は、接続プールの初期サイズを 2、接続の最大数を 5 に設定し、最大接続アイドル時間を 3 秒にして接続のリセットを有効にします。
CacheConnect.ConnectionString =
"Server = localhost;"
+ " Port = 1972;"
+ " Namespace = SAMPLES;"
+ " Password = SYS;"
+ " User ID = _SYSTEM;"
+ " Min Pool Size = 2;"
+ " Max Pool Size = 5;"
+ " Connection Reset = true;"
+ " Connection Lifetime = 3;";
CacheConnection クラスにも、プーリングの制御に使用できる次のスタティック・メソッドが含まれています。
CacheConnection.ClearPool(conn);
接続 conn に関連付けられた接続プールをクリアします。
CacheConnection.ClearAllPools();
接続プール内のすべての接続を削除してプールをクリアします。
CachePoolManager クラスの使用法
CacheClient.CachePoolManager クラスを使用すると、接続プーリングをプログラムで監視して制御できます。使用可能なスタティック・メソッドは以下のとおりです。
int count = CachePoolManager.ActiveConnectionCount;
すべてのプールにおける確立されている接続の合計数。合計数には、アイドル状態および使用中の両方の接続が含まれます。
int count = CachePoolManager.IdleCount();
すべてのプールにおけるアイドル状態の接続の合計数。
int count = CachePoolManager.IdleCount(conn);
接続オブジェクト conn に関連付けられたプール内のアイドル状態の接続の合計数。
int count = CachePoolManager.InUseCount();
すべてのプールにおける使用中の接続の合計数。
int count = CachePoolManager.InUseCount(conn);
接続オブジェクト conn に関連付けられたプール内の使用中の接続の合計数。
CachePoolManager.RecycleAllConnections(bool remove);
すべてのプールにおける接続をリサイクルします。
CachePoolManager.RecycleConnections(conn,bool remove)
接続オブジェクト conn に関連付けられたプール内の接続をリサイクルします。
CachePoolManager.RemoveAllIdleConnections();
すべての接続プールからアイドル状態の接続を削除します。
CachePoolManager.RemoveAllPoolConnections();
接続の状態にかかわらず、すべての接続とすべてのプールを削除します。
これらのメソッドの多くを使用している実用的な例は、bookdemos サンプル・プログラムの Proxy_9_Connection_Pools() メソッドを参照してください (“Caché NET サンプル・プログラムを参照”)。
Caché サーバ構成
Caché Server プロセスで .NET クライアントを使用するために必要な構成はほとんどありません。Caché が提供するサンプル・プログラムは、Caché を既定でインストールすると、変更を加えなくても動作します。このセクションでは、接続に必要なサーバの設定とトラブルシューティングのヒントについて説明します。
Caché Server に接続するすべての .NET クライアントには、以下の情報が必要です。
-
サーバ IP アドレス、ポート番号、および Caché ネームスペースを指定する URL。
-
大文字と小文字が区別されるユーザ名とパスワード。
既定では、サンプル・プログラムは以下の接続情報を使用します。
-
接続文字列 : "localhost[1972]:SAMPLES"
-
ユーザ名 : "_SYSTEM"
-
パスワード : "SYS"
問題が発生した場合は、以下の点を確認してください。
-
Caché Server プロセスがインストールされ実行中であることを確認します。
-
Caché Server プロセスを実行しているマシンの IP アドレスを確認します。サンプル・プログラムでは "localhost" が使用されます。サンプル・プログラムで別のシステムを既定とする場合は、コード内の接続文字列を変更する必要があります。
-
待ち受け状態になっている Caché Server の TCP/IP ポート番号を確認します。サンプル・プログラムでは "1972" が使用されます。サンプル・プログラムで別のポートを既定とする場合は、サンプル・コード内で番号を変更する必要があります。
-
接続を確立する際に、有効なユーザ名とパスワードを使用していることを確認します (ユーザ名とパスワードは、管理ポータル (システム管理, セキュリティ, ユーザ) を使用して管理できます)。サンプル・プログラムは、管理者のユーザ名 "_SYSTEM" と既定のパスワード "SYS" を使用します。通常、サーバのインストール後に既定のパスワードを変更します。サンプル・プログラムで異なるユーザ名とパスワードを既定にする場合は、サンプル・コードを変更する必要があります。
-
接続 URL に有効な Caché ネームスペースがあることを確認してください。ネームスペースは、プログラムで使用するクラスとデータを含む必要があります。サンプルは、Caché と共に事前にインストールされている SAMPLES ネームスペースに接続します。
接続パラメータ
以下の各テーブルは、接続文字列で使用可能なすべてのパラメータを示しています。
必須パラメータ
以下の 5 つのパラメータはすべての接続文字列に必要です (“接続の作成” を参照してください)。
名前 | 説明 |
---|---|
SERVER | IP アドレスまたはホスト名。次に例を示します。
Server = localhost 代替名 : ADDR、ADDRESS、DATA SOURCE、NETWORK ADDRESS |
PORT | 接続の TCP/IP ポート番号を指定します。次に例を示します。
Port = 1972 |
NAMESPACE | 接続先のネームスペースを指定します。次に例を示します。
Namespace = SAMPLES 代替名 : INITIAL CATALOG、DATABASE |
PASSWORD | ユーザのパスワード。次に例を示します。
Password = SYS 代替名 : PWD |
USER ID | ユーザのログイン名を設定します。次に例を示します。
User ID = _SYSTEM 代替名 : USER、UID |
接続プーリング・パラメータ
以下のパラメータは接続プーリングのさまざまな機能を定義します (“接続プーリング” を参照してください)。
名前 | 説明 |
---|---|
CONNECTION LIFETIME | 接続のリセット・メカニズムが有効な場合に、アイドル状態のプールされた接続をリセットするまで待機する秒単位の長さ。既定は 0 です。 |
CONNECTION RESET | プールされた接続のリセット・メカニズムを有効にします (CONNECTION LIFETIME と共に使用)。既定は false です。 |
MAX POOL SIZE | この特定の接続文字列に対する接続プールの最大サイズ。既定は 100 です。 |
MIN POOL SIZE | この特定の接続文字列に対する接続プールの最小または初期サイズ。既定は 0 です。 |
POOLING | 接続プーリングを有効にします。既定は true です。 |
その他の接続パラメータ
以下のパラメータを必要に応じてオプションで設定できます。
名前 | 説明 |
---|---|
APPLICATION NAME | アプリケーション名を設定します。 |
CONNECTION TIMEOUT | 失敗と見なすまでに接続の確立を試行する、秒単位の時間の長さを設定します。既定は 30 です。
代替名 : CONNECT TIMEOUT |
CURRENT LANGUAGE | このプロセスの言語を設定します。 |
LOGFILE | ロギングを有効にしてログ・ファイルの場所を設定します。
代替名 : LOG FILE |
PACKET SIZE | TCP のパケット・サイズを設定します。既定は 1024 です。 |
PREPARSE CACHE SIZE | リサイクル処理を適用する前に解析前のキャッシュで保持する SQL コマンド数の上限を設定します。既定は 200 です。 |
SO RCVBUF | TCP の受信バッファ・サイズを設定します。既定値は 0 です (システムの既定値を使用)。
代替名 : SO_RCVBUF |
SO SNDBUF | TCP の送信バッファ・サイズを設定します。既定値は 0 です (システムの既定値を使用)。
代替名 : SO_SNDBUF |
SSL | SSL/TLS でクライアント・サーバ接続を保護するかどうかを指定します ("Caché セキュリティ管理ガイド" の “Caché との通信に SSL/TLS を使用するための .NET クライアントの構成” を参照)。既定は false です。 |
TCP NODELAY | TCP の nodelay オプションを設定します。既定は true です。
代替名 : TCP_NODELAY |
TRANSACTION ISOLATION LEVEL | 接続の System.Data.IsolationLevel 値を設定します。
代替名 : TRANSACTIONISOLATIONLEVEL |
WORKSTATION ID | プロセス ID のワークステーション名を設定します。 |