Почему мой SqlConnection остается в списке процессов SSMS после его закрытия? - PullRequest
3 голосов
/ 02 июля 2011

У меня есть консольное приложение 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" и чья база данных ""мастер".

Когда я перейду к второй точке останова F5, я ожидаю, что процесс будет удален из списка процессов, так как к этому моменту я закрыл SqlConnection.Однако процесс остается в списке, пока приложение не закроется.

Я предполагаю, что процесс остается в списке, так как мое соединение на самом деле не закрывается.Если мое предположение верно, то что еще мне нужно сделать, чтобы закрыть соединение?Если мое предположение неверно, то почему мой процесс все еще указан и как я могу проверить, действительно ли мое соединение было правильно закрыто?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 02 июля 2011

Как я знаю - когда вы используете метод Close или Dispose - вы просто возвращаете свое соединение в пул соединений для повторного использования (соединение не будет действительно закрыто) - вы можете получить больше информации здесь.

1 голос
/ 02 июля 2011

В дополнение к ответу DanNsk, возможно, SPID используется повторно, если соединение действительно закрыто и не возвращено в пул соединений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...