.NET ODBC连接池

时间:2008-09-24 05:33:52

标签: .net odbc connection-pooling

我打开这样的连接:

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

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

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

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

3 个答案:

答案 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”,它就会找到适合您的应用程序。

从OP

澄清后更新

在确定是否在每台计算机上启用连接池方面,查看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会告诉你程序使用的连接。