这是我们收到的错误。我们将应用程序和数据库服务器从 32 位移至 x64。服务器上安装了 Framework 2.0 Service Pack 2。
超时已到期。在从池中获取连接之前已超过超时期限。这可能是因为所有池连接都在使用中并且已达到最大池大小。
答案1
此错误可能意味着您没有关闭 ADO.Net 连接。查看您的代码,确保您的所有 SqlConnection 对象都在 ASP.Net 代码中被明确正确处置。您可以使用 VB 或 C# 代码中的 using 块来执行此操作。当超出范围时,using 构造将自动关闭并处置您的连接...
// C# example
using (var conn = new SqlConnection(myConnectString))
{
conn.Open();
// your data access code here
}
... 或者 ...
' VB example
Using conn As var = New SqlConnection(myConnectString)
conn.Open()
' your data access code here
End Using
答案2
您是否在连接字符串中指定了 Connect Timeout =?如果没有,您可能需要添加它并指定 300 秒以查看是否需要更多时间。我相信默认值是 15 秒。
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx
答案3
当我们将一个相当大的 Web 服务集成到我们的生产环境中时,我的团队也遇到了类似的问题。我们没有发现任何未关闭连接的情况,因此我们不得不得出结论,这些连接确实是需要的。我仍然必须说,增加连接池的最大大小感觉有点不合常理……为了节省一些谷歌搜索,下面是更改它的确切方法:
<connectionStrings>
<add name="ConnString"
connectionString="Data Source=IP; Initial Catalog=DBName;User ID=User;
Password=Pass; Max Pool Size=200;"
providerName="System.Data.SqlClient" />
</connectionStrings>
请注意:“最大池大小=200;“