[英].NET ODBC Connection Pooling
我打開這樣的連接:
Using conn as New OdbcConnection(connectionString)
conn.Open()
//do stuff
End Using
如果啟用了連接池,則連接不會物理關閉,而是釋放到池中並將重新使用。 如果它被禁用,它將被物理關閉。
有沒有辦法以編程方式了解是否啟用了連接池? 以及池中當前打開的已使用和未使用的連接數?
編輯:我需要從程序中獲取此信息,我不能在部署程序的每台PC上手動檢查它。
MSDN作為對此的深入指導
從數據源管理員配置連接池
[剪斷]
或者,您可以在“運行”提示符下啟動ODBC數據源管理器。 在任務欄上, 單擊“開始”,單擊“運行”,然后鍵入Odbcad32。
用於管理連接池的選項卡位於ODBC 3.5及更高版本的“ODBC數據源管理器”對話框中。 從注冊表配置連接池
對於ODBC核心組件版本3.5之前的版本,您需要直接修改注冊表以控制連接池CPTimeout值。
池總是由數據服務器軟件處理。 重點是在.NET中你不必擔心它(例如,這就是你在使用SQL Server時應該總是使用SqlConnection的原因 - 部分原因是它啟用了連接池)。
在Vista上,只需在“開始”菜單中鍵入“ODBC”,它就會找到適合您的應用程序。
在確定是否在每台計算機上啟用了連接池方面,查看MSDN指南,如果您檢查注冊表值,我會說您最好(請參閱本文以獲取有關注冊表訪問的指示)。
TBH雖然,除非客戶端機器真的很糟糕,我甚至可能都不會打擾.. AFAIK它默認啟用,並且在客戶端機器上打開連接(根據我的經驗)從來沒有什么大不了的。 當批量打開時,它才真正成為一件大事。
看起來你可以只讀這個注冊表項:
[HKEYLOCALMACHINE] \\ SOFTWARE \\ ODBC \\ ODBCINST.INI \\ SQL Server \\ CPTimeout
(或其某些變體,具體取決於您的操作系統和用戶帳戶)。 如果值為0,則禁用連接池。 如果它是0以上的任何值,則啟用它。
看到:
http://msdn.microsoft.com/en-us/library/ms810829.aspx
我不確定是否獲得了開放連接的數量。 只是好奇:為什么你需要知道這個數字?
要確定每個數據庫上的打開連接數,請嘗試使用此sql - 我是從Internet上的文檔中獲取的
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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.