none
SQL Server 2005 接続プールを有効にする方法 RRS feed

  • 質問

  • お世話になります。

     

    SQL Server 2005にて、接続プール機能を明示的に有効にする方法はありませんでしょうか?

    ただし、以下の条件を満たす必要があります。

    ・.NetFrameworkを介さずに接続する

    ・OLE DB、ODBC接続などの外部インターフェースは使用しない

     

    Oracleでは共有サーバ接続機能を用いることで接続プール機能を使うことができるのですが、

    同様の機能がSQL Server 2005にあればベストなのですが…

     

    クライアント側から接続時に指定するような方法でも構いません。

     

    ご教示のほどよろしくお願いします。

    2008年2月18日 10:50

回答

  •  kita3 さんからの引用

    Oracleでは共有サーバ接続機能を用いることで接続プール機能を使うことができるのですが、

    同様の機能がSQL Server 2005にあればベストなのですが…

    Oracleのはサーバ側でサポートしている接続プール機能ですね。そのため、クライアント側はある意味なんでも良いのですが、SQL Server 2005にはサーバ側で接続プール機能はサポートしていなかったと思います(あらためてMSDNなどを調べてみましたが見つかりませんでした)。

    そのためSQL Serverでは、接続プール機能のあるクライアントコンポーネント(ADO.NETのSystem.Data.SqlClientなど)を使う必要があると思います。

     

    ご質問では、.NET FrameworkもOLE DBやODBCなども使わないということですが、SQL Serverとの接続はどのような方法が候補に挙がっているのでしょうか。その候補を列挙して頂ければ、もしかしたら接続プール機能のあるものもあるかも知れませんし、その候補について詳しい方もいらっしゃるかも知れません。

     

    2008年2月19日 3:03
  •  

     米田です。

    >Oracleでは共有サーバ接続機能を用いることで接続プール機能を使うことができるのですが、
     Oracleについて、記述が主客が混乱しているように見えます。

    意図としては、ユーザー、あるいはクライアントプログラムからの接続に対し、プロセス数をおさえ

    リソースを節約したい(=スレッドで動いて欲しい)でいいでしょうか?

     

     SQL Server 2005については、まず Books Online の

    データベース エンジンの高度な詳細事項 > リレーショナル データベース エンジンのアーキテクチャ > スレッドおよびタスクのアーキテクチャ
    と、それ以下を読んでください。

     MS SQL Server は、Windows専用に開発されてきたため、原則的に常にマルチスレッドで動きます。この点では、いっさい設定、指定は不要です。

     

     次に、その上で、クライアント-サーバー間の接続を節約する点では、

    >SQL Serverとの接続は、仲介するソフトを最小限に抑えたいため、T-SQLによるアクセスを考えています。
    >サーバ側で接続プール機能をサポートしていないのでしたら、クライアントからの接続時にプーリング処理を行なうプログラムを自作するしかないでしょうか。
     基本的には、不要です。

    気になるならT-SQLをどの接続方法で、SQL Server 2005に伝えるかを例示してください。

     

    SQL Server 2005に付属のクライアント側ライブラリは、コネクションプーリングが最初から有効なので、バージョンが古くないか、標準的でないライブラリを使用していないかが問題になる程度です。

    (旧バージョン向けや、サードパーティー提供の場合にはコネクションプーリングがないこともあります)

    2008年2月19日 14:12

すべての返信

  •  kita3 さんからの引用

    Oracleでは共有サーバ接続機能を用いることで接続プール機能を使うことができるのですが、

    同様の機能がSQL Server 2005にあればベストなのですが…

    Oracleのはサーバ側でサポートしている接続プール機能ですね。そのため、クライアント側はある意味なんでも良いのですが、SQL Server 2005にはサーバ側で接続プール機能はサポートしていなかったと思います(あらためてMSDNなどを調べてみましたが見つかりませんでした)。

    そのためSQL Serverでは、接続プール機能のあるクライアントコンポーネント(ADO.NETのSystem.Data.SqlClientなど)を使う必要があると思います。

     

    ご質問では、.NET FrameworkもOLE DBやODBCなども使わないということですが、SQL Serverとの接続はどのような方法が候補に挙がっているのでしょうか。その候補を列挙して頂ければ、もしかしたら接続プール機能のあるものもあるかも知れませんし、その候補について詳しい方もいらっしゃるかも知れません。

     

    2008年2月19日 3:03
  • ご回答ありがとうございます。

     

    > ご質問では、.NET FrameworkもOLE DBやODBCなども使わないということですが、SQL Serverとの接続はどのような方法が候補に挙がっているのでしょうか。その候補を列挙して頂ければ、もしかしたら接続プール機能のあるものもあるかも知れませんし、その候補について詳しい方もいらっしゃるかも知れません。

     

    SQL Serverとの接続は、仲介するソフトを最小限に抑えたいため、T-SQLによるアクセスを考えています。

    サーバ側で接続プール機能をサポートしていないのでしたら、クライアントからの接続時にプーリング処理を行なうプログラムを自作するしかないでしょうか。

     

    2008年2月19日 5:25
  •  

     米田です。

    >Oracleでは共有サーバ接続機能を用いることで接続プール機能を使うことができるのですが、
     Oracleについて、記述が主客が混乱しているように見えます。

    意図としては、ユーザー、あるいはクライアントプログラムからの接続に対し、プロセス数をおさえ

    リソースを節約したい(=スレッドで動いて欲しい)でいいでしょうか?

     

     SQL Server 2005については、まず Books Online の

    データベース エンジンの高度な詳細事項 > リレーショナル データベース エンジンのアーキテクチャ > スレッドおよびタスクのアーキテクチャ
    と、それ以下を読んでください。

     MS SQL Server は、Windows専用に開発されてきたため、原則的に常にマルチスレッドで動きます。この点では、いっさい設定、指定は不要です。

     

     次に、その上で、クライアント-サーバー間の接続を節約する点では、

    >SQL Serverとの接続は、仲介するソフトを最小限に抑えたいため、T-SQLによるアクセスを考えています。
    >サーバ側で接続プール機能をサポートしていないのでしたら、クライアントからの接続時にプーリング処理を行なうプログラムを自作するしかないでしょうか。
     基本的には、不要です。

    気になるならT-SQLをどの接続方法で、SQL Server 2005に伝えるかを例示してください。

     

    SQL Server 2005に付属のクライアント側ライブラリは、コネクションプーリングが最初から有効なので、バージョンが古くないか、標準的でないライブラリを使用していないかが問題になる程度です。

    (旧バージョン向けや、サードパーティー提供の場合にはコネクションプーリングがないこともあります)

    2008年2月19日 14:12
  • > >Oracleでは共有サーバ接続機能を用いることで接続プール機能を使うことができるのですが、
    > Oracleについて、記述が主客が混乱しているように見えます。

    >意図としては、ユーザー、あるいはクライアントプログラムからの接続に対し、プロセス数をおさえ

    >リソースを節約したい(=スレッドで動いて欲しい)でいいでしょうか?

     

    おっしゃるとおりです。共有サーバ接続と接続プール機能を混同してしまっていました。

     

    ご回答ありがとうございました。

    2008年2月22日 3:14