C# SQL Server:已达到最大池大小
每当应用程序池被回收时,我在从c#应用程序连接SQL Server时发现以下错误。我已经检查了当收到此错误时,尽管实际限制是200(我在web.config中设置),但数据库中只打开了20个连接 此外,连接在代码中正确关闭,这样就不会有问题。请注意,这并不是每次池回收时都会发生,而是发生在我们系统有流量的一天 System.InvalidOperationException:超时已过期。超时时间 从池中获取连接之前已过。这可能有 发生的原因是所有池连接都在使用中,并且池大小最大 联系到了。在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection、TaskCompletionSourceC# SQL Server:已达到最大池大小,c#,sql-server,ado.net,C#,Sql Server,Ado.net,每当应用程序池被回收时,我在从c#应用程序连接SQL Server时发现以下错误。我已经检查了当收到此错误时,尽管实际限制是200(我在web.config中设置),但数据库中只打开了20个连接 此外,连接在代码中正确关闭,这样就不会有问题。请注意,这并不是每次池回收时都会发生,而是发生在我们系统有流量的一天 System.InvalidOperationException:超时已过期。超时时间 从池中获取连接之前已过。这可能有 发生的原因是所有池连接都在使用中,并且池大小最大 联系到了。在 S
1重试、DbConnectionOptions
用户选项、DbConnectionInternal oldConnection、DbConnectionInternal&
连接)在
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection
外部连接,数据库连接工厂连接工厂,
TaskCompletionSource
1重试,数据库连接选项用户选项)位于
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection
外部连接,数据库连接工厂连接工厂,
TaskCompletionSource1重试,DbConnectionOptions用户选项)位于
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource
1
重试)在
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1
重试)在System.Data.SqlClient.SqlConnection.Open()处
System.Data.SqlClient.SqlConnection.Open()
每次打开连接时,请确保必须将其关闭
每次打开连接时,请确保必须将其关闭 试试这个:
SqlConnection cn = new SqlConnection(strCn);
try
{
using (SqlCommand cmd = new SqlCommand("select * from xxxx", cn))
{
cn.Open();
//do something
cn.Close();
}
}
catch (Exception exception)
{
cn.Close();
throw exception;
}
试试这个:
SqlConnection cn = new SqlConnection(strCn);
try
{
using (SqlCommand cmd = new SqlCommand("select * from xxxx", cn))
{
cn.Open();
//do something
cn.Close();
}
}
catch (Exception exception)
{
cn.Close();
throw exception;
}
谢谢,darkwood,但是我已经提到了连接在代码中是正确关闭的。我已经在finally块中关闭了它。这很好,但我更喜欢在成功完成操作或发布错误之前立即关闭连接。谢谢你,达克伍德,但我已经提到了连接在代码中是正确关闭的。我已经在finally块中关闭了它。这很好,但我更喜欢在成功完成操作或发布错误之前立即关闭连接。谢谢