質問

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

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 はプログラムで使用される接続を示します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top