池:与数据库的多个连接

时间:2013-07-29 11:35:02

标签: sql-server sql connectivity connection-pooling

我怀疑Pooling是否真的适用于vb.net。 我使用下面的查询来检查从不同的PC连接到数据库。

SELECT hostname,p.status,[program_name],loginame,name
FROM Master..sysprocesses  as p join master.dbo.sysdatabases as  d on p.dbID = d.dbID
WHERE p.ecid=0 and p.hostname<>'' 
order by name

在输出中,我看到从PC到同一个数据库的多个连接。

所以我对此有所怀疑。在我的vb.net应用程序中,我只打开一次连接,所以我认为连接将在同一个池中使用,因此只有一个打开的连接到PC的数据库。

更新

我有一个vb.net应用程序,它使用与SQL服务器数据库的连接。

  1. 如果我打开同一程序的多个实例,那么将从同一个池或不同的池中提取连接?

  2. 如果我们打开不同的exe但是两个打开连接到相同的数据库,那么两者都会使用相同的连接池吗?

  3. 当我们在SQL服务器中运行查询时,许多连接会显示在同一台PC上的同一个数据库中。

1 个答案:

答案 0 :(得分:1)

池不保证单个连接。对于每个并发活动(逻辑)连接,您需要一个物理连接。因此,如果您有10个线程,每个线程使用一个连接实例,或者由于某种原因在一个线程上打开10个连接,您将看到10个物理连接。

将单个会话分配给单个连接。每个连接最多可以同时有一个会话。