1

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

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,但都打开到相同数据库的连接,那么两者将使用相同的连接池?

当我们在 SQL Server 中运行查询时,许多连接显示到来自同一台 PC 的同一数据库。

4

1 回答 1

1

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

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

于 2013-07-29T21:43:54.273 回答