.NET ODBC 接続プーリング
-
02-07-2019 - |
質問
次のように接続を開きます。
Using conn as New OdbcConnection(connectionString)
conn.Open()
//do stuff
End Using
接続プーリングが有効な場合、接続は物理的に閉じられませんが、プールに解放され、再利用されます。無効にすると物理的に閉じられます。
知る方法はありますか プログラム的に もし 接続プーリングが有効になっているかどうか?プール内で現在開いている使用済みおよび未使用の接続の数は?
編集: この情報はプログラム内から取得する必要がありますが、プログラムが展開されるすべての PC に手動で行って確認することはできません。
解決
このレジストリ キーを読み取るだけでよいようです。
[HKEYLOCALMACHINE]\SOFTWARE\ODBC\ODBCINST.INI\SQL Server\CPTimeout
(または、OS とユーザー アカウントに応じて、そのバリエーションの一部)。値が 0 の場合、接続プーリングは無効になります。0 より大きい値の場合、有効になります。
見る:
http://msdn.microsoft.com/en-us/library/ms810829.aspx
開いている接続の数を取得する方法がわかりません。ちょっと興味があるんだけど:なぜ番号を知る必要があるのですか?
他のヒント
MSDN として これに関する詳細なガイドライン
データソース管理者からの接続プーリングの構成
[をちょきちょきと切る]
または、実行プロンプトでODBCデータソース管理者を起動することもできます。タスクバーで、 開始]をクリックし、[実行]をクリックし、ODBCAD32と入力します。
接続プーリングを管理するためのタブは、ODBC 3.5以降のバージョンのODBCデータソース管理者ダイアログボックスにあります。レジストリからの接続プーリングの構成
ODBCコアコンポーネントのバージョン3.5の前にバージョンの場合、レジストリを直接変更して接続プーリングCPTimeout値を制御する必要があります。
プーリングは常にデータ サーバー ソフトウェアによって処理されます。重要なのは、.NET ではそれについて心配する必要はないということです (たとえば、SQL Server を使用するときに常に SqlConnection を使用する必要があるのはこれが理由です。接続プールが有効になることがその一部です)。
アップデート
Vista では、スタート メニューに「ODBC」と入力するだけでアプリが見つかります。
OP からの説明に従って更新
各マシンで接続プーリングが有効になっているかどうかを判断するには、 MSDN ガイドライン レジストリ値を確認するのが最善だと思います (「 この記事 レジストリ アクセスのポインタ用)。
TBH ですが、クライアント マシンが本当にひどいものでない限り、おそらく気にすることはないと思います。私の知る限り、これはデフォルトで有効になっており、クライアントマシンで接続を開くことは(私の経験では)それほど大きなことではありませんでした。本当に大事になるのは、 たくさん が開かれています。
各データベースで開いている接続の数を確認するには、この 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
Spid <=50 は sqlserver によって使用されます。したがって、上記の SQL はプログラムで使用される接続を示します。