SQL Server, ADO.NET中来自不同主机/IP的相同连接字符串的连接池



我已经探索了SQL Server的连接池和最大池大小的概念,它说对于相同的连接字符串,SQL Server将在同一池中打开新的连接。

现在,我们有两个web服务器和一个负载均衡器,将请求定向到其中一个服务器。因此,两个服务器的API使用的连接字符串将是相同的。

我的问题是,两个服务器会使用相同的池打开新的连接,还是会在不同的池中打开新的连接?

由于sys.dm_exec_sessions table中会话的host_name不同,我猜它应该使用不同的池,但我找不到任何指定相同的文章。

连接池位于客户机上,而不是数据库服务器上。每个web服务器都有一个单独的连接池,每个不同的连接字符串和安全上下文。

这个查询将显示每台主机上所有连接池的当前数据库连接数:

SELECT host_name, COUNT(*) AS connection_count
FROM sys.dm_exec_sessions
GROUP BY host_name;

虽然服务器上没有连接池的概念,但是您可以通过聚合可用的连接字符串属性来估计每个池的连接数:

SELECT host_name, program_name, host_process_id, client_interface_name, login_name, COUNT(*) AS connection_count
FROM sys.dm_exec_sessions
GROUP BY host_name, program_name, host_process_id, client_interface_name, login_name;

最新更新