为什么我的SqlConnection在关闭后仍保留在SSMS进程列表中
本文关键字:SSMS 保留 进程 列表 我的 SqlConnection 为什么 | 更新日期: 2023-09-27 18:00:51
我有一个C#控制台应用程序,代码如下:
using (var cn = new SqlConnection())
{
cn.ConnectionString = "Data Source=localhost;Integrated Security=True;Persist Security Info=False";
cn.Open();
System.Console.WriteLine("past open");
}
System.Console.ReadLine();
运行时,我设置了两个断点。一个在WriteLine,一个在ReadLine。我还打开了Sql Server Management Studio(SSMS(,正在查看活动监视器的进程列表。
当我运行应用程序并到达第一个断点(在WriteLine(时,我很快就会在SSMS进程列表中看到一个进程,其应用程序名称为".Net SqlClient Data Provider",其数据库为"master"。
当我F5到第二个断点时,我的期望是该进程将从进程列表中删除,因为此时我已经关闭了SqlConnection。但是,在应用程序关闭之前,该进程仍保留在列表中。
我的假设是,这个过程仍然在列表中,因为我的连接并没有真正关闭。如果我的假设是准确的,那么我还需要做什么来关闭连接?如果我的假设不准确,那么为什么我的流程仍然被列出,以及我如何测试我的连接是否真的正确关闭?
谢谢。
正如我所知,当您使用Close或Dispose方法时,您只是将连接返回到一个连接池以供重用(连接不会真正关闭(,您可以在这里获得更多信息。
除了DanNsk的答案之外,如果连接真的关闭并且没有返回到连接池