[英].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.