我怀疑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服务器数据库的连接。
如果我打开同一程序的多个实例,那么将从同一个池或不同的池中提取连接?
如果我们打开不同的exe但是两个打开连接到相同的数据库,那么两者都会使用相同的连接池吗?
当我们在SQL服务器中运行查询时,许多连接会显示在同一台PC上的同一个数据库中。
答案 0 :(得分:1)
池不保证单个连接。对于每个并发活动(逻辑)连接,您需要一个物理连接。因此,如果您有10个线程,每个线程使用一个连接实例,或者由于某种原因在一个线程上打开10个连接,您将看到10个物理连接。
将单个会话分配给单个连接。每个连接最多可以同时有一个会话。