簡體   English   中英

.NET ODBC連接池

[英].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”,它就會找到適合您的應用程序。

從OP澄清后更新

在確定是否在每台計算機上啟用了連接池方面,查看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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM