什么可能导致从池获取 SQL 连接超时

本文关键字:获取 SQL 连接 超时 什么 | 更新日期: 2023-09-27 18:30:31

我在 IIS 下部署了一个 Web 应用程序。 它一直出现超时错误,我相信我已经将问题追踪到无法正确处理 SQL 连接的代码。

这将需要相当多的手术来修复,所以至少在我能够正确使用using块完成新代码的实现和测试之前,我决定将连接池的大小提高到天文数字。 但这似乎没有帮助。 我的连接字符串是:

数据源=MyServer;初始目录=MyDb;用户 ID = 我的用户;密码=我的Pwd;最大池大小 = 10000

我的日志文件显示:

系统无效操作异常:超时已过期。 从池获取连接之前经过的超时期限。 这可能是因为所有池连接都在使用中,并且已达到最大池大小。

在此期间,我一直保持性能监视器处于打开状态,用户连接数最多约为 150 个。 所以我不认为我们没有连接了。

还有什么可能导致此错误?

什么可能导致从池获取 SQL 连接超时

不幸的是,

SqlCommand 不遵守 ConnectionString 或 SqlConnection 的超时。并且必须手动设置。这是因为连接字符串中提到的超时用于连接,而不是执行。因此,请考虑通过代码设置超时。

var conn = new SqlConnection(cs);
var cmd = conn.CreateCommand();
cmd.CommandTimeout = conn.ConnectionTimeout;
...