我有一个客户端应用程序,通过using子句连接到数据库。连接池清除时间...我真的不知道该怎么称呼它:)
using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
{
sqlConn.Open();
//SQLcommand codes
}
我知道这将确保sqlConnn.Close()和sqlConn.Dispose()被调用。然而,运行该代码之后的每个客户端我仍然看到一些SPID上的SQLServer在睡眠模式,例如:
60 0睡眠SA AVENGER 0 Xmark命令等待0 61 0睡眠SA AVENGER 0 Xmark命令等待0 62 0睡觉SA AVENGER 0 Xmark AWAITING命令0
我知道这是因为我在我的连接中使用连接池,这就是为什么它们处于睡眠模式并在再次命令中重新使用。如果我没有对它们做任何事情,我会发现随着时间的推移(如10分钟左右之后),这些过程会被刷新。
我的问题是:是否有从C#或SQLServer2008的设置,将这次减少到2分钟左右?
我面对的问题是,如果我有很多客户端在短时间内连接到数据库,我的最大池连接限制会很快达到。我意识到我可以通过增加连接池来解决这个问题,但我认为这就像是从一个较小的一个升级到一个更大的一个碗,以防止泄漏的屋顶中的水。
我在MSDN上搜索并遇到了ClearPool(),这将让我隐式地从池中删除SPID,但我认为这打破了连接池的目的,它不是很干净。
任何帮助,非常感谢。
+1:如果数据访问层中的类也实现了'IDisposable',所以它也可以封装在'using'块中,这种解决方案的效果更好。 – 2012-02-28 17:46:43