Почему этот член класса оставляет соединение SQL открытым? - PullRequest
2 голосов
/ 30 июня 2010

В дополнение к моим недавним вопросам я закрыл большинство соединений, которые наше веб-приложение оставляло открытым.Однако соединение, созданное функцией ниже, остается открытым.Кто-нибудь может определить, почему он не закрывается?

public DataTable GetSubDepartment(int deptId)
{   
    DataTable dt = new DataTable();
    using (SqlConnection conn = new SqlConnection(Defaults.ConnStr))
    {
        SqlCommand cmd = new SqlCommand("proc_getDepartmentChild", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new SqlParameter("@dptParent", deptId));

        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cmd;
        da.Fill(dt);
    }
    return dt;
}

* РЕДАКТИРОВАТЬ * После комментария @ HenkHolterman: я использую журнал операций SQL Server Management Studio для просмотра открытых соединений.Этот указан как спящий.ТАК, что вы говорите, имеет смысл.Можно ли как-то сказать, что это объединенное соединение, а не открытое?

Ответы [ 2 ]

2 голосов
/ 30 июня 2010

Скорее всего, потому что он вернулся в пул соединений.

Вызовите

SqlConnection.ClearAllPools();

, чтобы очистить пул, затем он должен исчезнуть.Иногда это может быть полезно, но обычно не требуется.

1 голос
/ 30 июня 2010

Я бы предположил, что он висит в пуле соединений

...