【发布时间】:2015-12-01 09:00:27
【问题描述】:
我正在使用这个查询来查看当前的连接:
select loginame , nt_username, hostprocess, program_name, cmd, status, count(*) 'Connections count'
from master..sysprocesses
where spid > 50 and spid != @@spid
group by loginame , nt_username, dbid, hostprocess, program_name, cmd, status
order by loginame, count(*) desc;
每当我运行一个需要很长时间的查询时(比如,count(1) 来自一个大表,需要 40 多秒),连接数就会不断增加。结果,最大
已达到连接限制(EF 的默认值为 100),并且对我的站点的请求超时。异常消息如下所示:
Exception Message: The underlying provider failed on Open.
InnerException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
为什么会这样?
例如,如果我在 sql管理工作室:
select COUNT(1)
FROM tableA ss
INNER JOIN tableB s
ON s.Id = ss.tableAId
WHERE s.Time < '2015-10-01';
这是我在运行上一个查询时看到的:
这里显示 30 个连接;但它一直在增加。
【问题讨论】:
标签: sql-server database database-administration