我有一个长期运行的.NET进程(Windows服务),它与SQL Server通信。
最初,我在服务启动时打开了一个连接,并保持打开状态。但是,偶尔网络打嗝或重启SQL Server会破坏该连接,我的过程也不会知道这一点。它会尝试继续针对已关闭的连接抛出SQL。
试图保持这样的开放式连接显然是我试图过于聪明。那么,我:
SqlConnection
对象对于后者(#2),我有这段代码:
if(connection.State != ConnectionState.Open)
{
connection.Open();
}
我只需要这样做,因为连接已经存在。如果我每次创建连接都是新鲜的(#1),显然它将被关闭,我需要打开它。
我希望做的是利用SQL连接池来实际不每次都打开一个新连接,但只是让连接池管理它 - 给我一个开放的当它有一个时连接,或者当它没有时打开一个新的连接。
为了实现这一点,每次创建连接时是否重要(#1),或者我只是重用连接并尝试每次都重新打开它(#2)?
答案 0 :(得分:2)
连接池意味着即使你做(1),在框架下,框架也会为你做(2)以提高性能。因此,您可以随时创建新连接。
值得指出的是,在大多数情况下,池只适用于相同的连接字符串。因此,如果您更改某些选项,则可能不会合并这些连接。