我打开这样的连接:
Using conn as New OdbcConnection(connectionString)
conn.Open()
//do stuff
End Using
如果启用了连接池,则连接不是物理关闭,而是释放到池中并将被重用。如果它被禁用,它将被物理关闭。
如果启用连接池,有没有办法知道以编程方式 ?以及当前在池中打开的已使用和未使用的连接数?
编辑:我需要从程序中获取此信息,我无法在部署程序的每台PC上手动检查。
答案 0 :(得分:2)
MSDN为in-depth guidelines on this
从中配置连接池 数据源管理员
[剪断]
或者,您可以启动ODBC 运行时的数据源管理员 提示。在任务栏上,单击“开始”, 单击“运行”,然后键入Odbcad32。
用于管理连接的选项卡 可以在ODBC数据中找到池 “源管理员”对话框中的 版本ODBC 3.5及更高版本。 配置连接池 登记处
对于版本3.5之前的版本 你需要的是ODBC核心组件 直接修改注册表 控制连接池 CPTimeout值。
池总是由数据服务器软件处理。重点是在.NET中你不必担心它(例如,这就是你在使用SQL Server时应该总是使用SqlConnection的原因 - 部分原因是它启用了连接池)。 / p>
在Vista上,只需在“开始”菜单中键入“ODBC”,它就会找到适合您的应用程序。
在确定是否在每台计算机上启用连接池方面,查看MSDN guidelines我会说你最好检查注册表值(有关注册表访问的指示,请参阅this article)
但是,TBH除非客户端机器真的很糟糕,否则我甚至可能都不会打扰.AFAIK默认启用它,并且在客户端计算机上打开连接(根据我的经验)从来没有什么大不了的。当 lot 被打开时,它才真正成为一件大事。答案 1 :(得分:1)
看起来您只需阅读此注册表项:
[HKEYLOCALMACHINE] \ SOFTWARE \ ODBC \ ODBCINST.INI \ SQL Server \ CPTimeout
(或其某些变体,具体取决于您的操作系统和用户帐户)。如果值为0,则禁用连接池。如果它是0以上的任何值,则启用它。
请参阅:
http://msdn.microsoft.com/en-us/library/ms810829.aspx
我不确定是否获得了开放连接的数量。只是好奇:为什么你需要知道这个数字?
答案 2 :(得分:0)
要确定每个数据库上的打开连接数,请尝试使用此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
spids< = 50由sqlserver使用。所以上面的sql会告诉你程序使用的连接。