为什么该类成员保持 SQL 连接打开?

发布于 2024-09-07 06:04:57 字数 744 浏览 8 评论 0原文

除了我最近的问题之外,我现在已经关闭了我们的网络应用程序保持打开状态的大部分连接。但是,由以下函数创建的连接保持打开状态。谁能确定为什么它不关闭?

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 活动日志来查看打开的连接。这个被列为睡眠状态。所以你说的有道理。有什么方法可以告诉我这是一个池连接而不是一个开放连接吗?

Further to my recent questions, I've now closed most of the connections that our web application was leaving open. However, the connection created by the function below remains open. Can anyone identify why it is not closing?

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;
}

* EDIT *
Following @HenkHolterman's comment:
I'm using SQL Server Management Studio Activity log to view the open connections. This one is listed as sleeping. SO what you say makes sense. Is there any way I can tell that this is a pooled connection rather than an open one?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怀念你的温柔 2024-09-14 06:04:57

很可能是因为它返回到连接池。

呼叫

SqlConnection.ClearAllPools();

清理池,然后它就会消失。这有时很有用,但通常不需要。

Most probably because it went back to the connection pool.

Call

SqlConnection.ClearAllPools();

to clear the pool, then it should disappear. This could sometimes be useful, but is usually not needed.

一念一轮回 2024-09-14 06:04:57

我假设它挂在 连接池

I would assume that it's hanging in the connectionpool

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文