我知道如果我实例化一个SqlConnection对象,我真的从连接池中获取连接.当我调用Open()时,它将打开连接.如果我在该SqlConnection对象上调用Close()或Dispose()方法,它将返回到连接池.
但是,这并没有真正告诉我它是否真的关闭,或者我是否仍然有一个与数据库的活动连接.
如何强制SqlConnection在网络级别关闭,或者至少告诉它什么时候关闭?
例:
using(SqlConnection conn = new SqlConnection(DBConnString)) {
conn.Open();
SqlCommand cmd = conn.CreateCommand();
...
cmd.ExecuteReader(CommandBehavior.CloseConnection);
...
}
Run Code Online (Sandbox Code Playgroud)
如果连接是TRULY关闭,则第二次和第三次运行也应该是300 ms.但我知道这些运行并没有真正关闭连接(我检查了SQL Server的活动监视器).它不需要额外的200ms来执行身份验证/等.
如何强制连接真正关闭?
思路
参考