我打开这样的连接:

Using conn as New OdbcConnection(connectionString)
    conn.Open()
    //do stuff
End Using

如果启用了连接池,则连接不是物理关闭,而是释放到池中并将被重用。如果它被禁用,它将被物理关闭。

如果启用连接池,有没有办法知道以编程方式 ?以及当前在池中打开的已使用和未使用的连接数?

编辑:我需要从程序中获取此信息,我无法在部署程序的每台PC上手动检查。

有帮助吗?

解决方案

看起来您只需阅读此注册表项:

[HKEYLOCALMACHINE] \ SOFTWARE \ ODBC \ ODBCINST.INI \ SQL Server \ CPTimeout

(或其某些变体,具体取决于您的操作系统和用户帐户)。如果值为0,则禁用连接池。如果它是0以上的任何值,则启用它。

请参阅:

http://msdn.microsoft.com/en-us/library /ms810829.aspx

我不确定是否获得了开放连接的数量。只是好奇:为什么你需要知道这个数字?

其他提示

MSDN为有关此问题的深入指南

  

从中配置连接池   数据源管理员

     

[剪断]

     

或者,您可以启动ODBC   运行时的数据源管理员   提示。在任务栏上,单击“开始”,   单击“运行”,然后键入Odbcad32。

     

用于管理连接的选项卡   可以在ODBC数据中找到池   “源管理员”对话框中的   版本ODBC 3.5及更高版本。   配置连接池   登记处

     

对于版本3.5之前的版本   你需要的是ODBC核心组件   直接修改注册表   控制连接池   CPTimeout值。

池总是由数据服务器软件处理。重点是在.NET中你不必担心它(例如,这就是你在使用SQL Server时应该总是使用SqlConnection的原因 - 部分原因是它启用了连接池)。 / p>

更新

在Vista上,只需输入<!>“ODBC <!>”;在“开始”菜单中,它将为您找到该应用程序。

从OP

澄清后更新

在确定是否在每台计算机上启用连接池方面,查看 MSDN指南如果您检查注册表值,我会说您最好(参见本文有关注册表访问的指示。)

但是,TBH除非客户端机器真的很糟糕,否则我甚至可能都不会打扰.AFAIK默认启用它,并且在客户端计算机上打开连接(根据我的经验)从来没有什么大不了的。当 lot 被打开时,它才真正成为一件大事。

要确定每个数据库上的打开连接数,请尝试使用此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 <!> lt; = 50由sqlserver使用。所以上面的sql会告诉你程序使用的连接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top