3

次のような接続を開きます。

Using conn as New OdbcConnection(connectionString)
    conn.Open()
    //do stuff
End Using

接続プーリングが有効になっている場合、接続は物理的に閉じられませんが、プールに解放され、再利用されます。無効にすると、物理的に閉じられます。

接続プールが有効かどうかをプログラム で知る方法はありますか? プールで現在開いている使用済みおよび未使用の接続の数は?

編集:プログラム内からこの情報を取得する必要があります。プログラムが展開されるすべての PC で手動で確認することはできません。

4

3 に答える 3

3

これに関する詳細なガイドラインとして MSDN

データ ソース アドミニストレータからの接続プールの構成

[をちょきちょきと切る]

または、実行プロンプトで ODBC データ ソース アドミニストレータを起動することもできます。タスク バーで、[スタート]、[ファイル名を指定して実行] の順にクリックし、「Odbcad32」と入力します。

接続プールを管理するためのタブは、バージョン ODBC 3.5 以降の [ODBC データ ソース アドミニストレータ] ダイアログ ボックスにあります。レジストリからの接続プールの構成

ODBC コア コンポーネントのバージョン 3.5 より前のバージョンでは、レジストリを直接変更して、接続プールの CPTimeout 値を制御する必要があります。

プーリングは、常にデータ サーバー ソフトウェアによって処理されます。全体的なポイントは、.NET ではそれについて心配する必要がないということです (たとえば、これが、SQL Server で作業するときに常に SqlConnection を使用する必要がある理由です。その一部は、接続プールを有効にすることです)。

アップデート

Vista では、[スタート] メニューに「ODBC」と入力するだけで、アプリが検索されます。

OPからの明確化に続く更新

各マシンで接続プールが有効になっているかどうかを判断するには、MSDN のガイドラインを参照して、レジストリ値を確認するのが最善だと思います (レジストリ アクセスの指針については、この記事を参照してください)。

TBH ですが、クライアント マシンが本当にひどいものでない限り、気にすることさえありません。私の知る限り、デフォルトで有効になっており、クライアント マシンで接続を開くことは (私の経験では) 大したことではありませんでした。ロットが開かれているときだけ、それは本当に大したことになります。

于 2008-09-24T05:36:14.193 に答える
1

このレジストリキーを読み取ることができるようです:

[HKEYLOCALMACHINE]\SOFTWARE\ODBC\ODBCINST.INI\SQL Server\CPTimeout

(または、OS とユーザー アカウントに応じて、その変形)。値が 0 の場合、接続プーリングは無効になります。0 より大きい値の場合、有効になっています。

見る:

http://msdn.microsoft.com/en-us/library/ms810829.aspx

開いている接続の数を取得することについてはわかりません。ちょっと興味があります: なぜ番号を知る必要があるのですか?

于 2008-09-24T06:16:25.873 に答える
0

各データベースで開いている接続の数を確認するには、このSQLを試してください-インターネット上のドキュメントから取得しました

select  db_name(dbid) , count(*) 'connections count'
  from master..sysprocesses
 where spid > 50 and spid  @@spid
 group by  db_name(dbid)
 order by count(*) desc

Spids<=50はsqlserverによって使用されます。したがって、上記のSQLは、プログラムで使用される接続を示します。

于 2009-05-08T07:07:56.093 に答える