Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Caché データベースへの接続

この章では、CacheConnection オブジェクトを使用して、ユーザのクライアント・アプリケーションと Caché Server との間に接続を作成する方法について説明します。この接続は、Caché オブジェクト・バインディング・クラスと ADO.NET Managed Provider クラスの両方で使用されます。

接続の作成

以下のコードは、ほとんどの Caché サンプル・プログラム (詳細は、“Caché .NET サンプル・プログラム” を参照) で使用する SAMPLES ネームスペースへの接続を確立します。接続オブジェクトは、Caché オブジェクト・バインディング・クラスまたは ADO.NET Managed Provider クラス、あるいはその両方を使用しているかどうかにかかわらず、Caché 接続が必要なすべてのクラスで使用できます。接続オブジェクトをインスタンス化する場合に設定できるパラメータの完全なリストについては、“接続パラメータ” を参照してください。

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 のインスタンスにより、必要に応じて自動的に接続が開閉します。

CacheConnection.ConnectDlg() メソッドの使用法

接続文字列の入力をユーザに要求することもできます。その場合は、前述の例を以下のように書き換えます。

  private void CreateConnection(){
    try {
      CacheConnect = new CacheConnection();
      CacheConnect.ConnectionString = CacheConnection.ConnectDlg();
      CacheConnect.Open();
    }
  ...

ConnectDlg() メソッドは、Caché の標準接続ダイアログを表示して、ユーザの入力を接続文字列として返します。

接続プーリング

接続プーリングは既定で有効になっています。以下の接続文字列パラメータを使用すると、接続プーリングのさまざまな機能を制御できます。

  • Pooling — 既定は true です。接続プーリングを使用しない接続を作成するには、Poolingfalse に設定します。

  • Max Pool Size および Min Pool Size 既定値は 0 および 100 です。これらのパラメータを設定すると、この特定の接続文字列に対して接続プールの最大および最小 (初期) サイズを指定できます。

  • Connection Reset および Connection LifetimeConnection Resettrue に設定すると、プールされた接続のリセット・メカニズムが有効になります。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 クラスにも、プーリングの制御に使用できる次のスタティック・メソッドが含まれています。

ClearPool(conn)
   CacheConnection.ClearPool(conn);

接続 conn に関連付けられた接続プールをクリアします。

ClearAllPools()
   CacheConnection.ClearAllPools();

接続プール内のすべての接続を削除してプールをクリアします。

CachePoolManager クラスの使用法

CacheClient.CachePoolManager クラスを使用すると、接続プーリングをプログラムで監視して制御できます。使用可能なスタティック・メソッドは以下のとおりです。

ActiveConnectionCount
int count = CachePoolManager.ActiveConnectionCount;

すべてのプールにおける確立されている接続の合計数。合計数には、アイドル状態および使用中の両方の接続が含まれます。

IdleCount()
   int count = CachePoolManager.IdleCount();

すべてのプールにおけるアイドル状態の接続の合計数。

IdleCount(conn)
   int count = CachePoolManager.IdleCount(conn);

接続オブジェクト conn に関連付けられたプール内のアイドル状態の接続の合計数。

InUseCount()
   int count = CachePoolManager.InUseCount();

すべてのプールにおける使用中の接続の合計数。

InUseCount(conn)
   int count = CachePoolManager.InUseCount(conn);

接続オブジェクト conn に関連付けられたプール内の使用中の接続の合計数。

RecycleAllConnections(Boolean)
   CachePoolManager.RecycleAllConnections(bool remove);

すべてのプールにおける接続をリサイクルします。

RecycleConnections(conn, Boolean)
   CachePoolManager.RecycleConnections(conn,bool remove)

接続オブジェクト conn に関連付けられたプール内の接続をリサイクルします。

RemoveAllIdleConnections()
   CachePoolManager.RemoveAllIdleConnections();

すべての接続プールからアイドル状態の接続を削除します。

RemoveAllPoolConnections()
   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 のワークステーション名を設定します。
FeedbackOpens in a new tab