首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何确定ms sql server 2005中打开/活动的连接总数

如何确定ms sql server 2005中打开/活动的连接总数
EN

Stack Overflow用户
提问于 2008-10-19 04:27:33
回答 6查看 314.2K关注 0票数 95

我的PHP/MS Sql Server 2005/win 2003应用程序偶尔会变得非常无响应,内存/cpu使用率没有达到峰值。如果我试图从sql management studio打开任何新的连接,它就会挂在打开的连接对话框中。如何确定活动连接的总数ms sql server 2005

EN

回答 6

Stack Overflow用户

发布于 2008-10-19 10:47:07

正如@jwalkerjr所提到的,您应该在代码中处理连接(如果启用了连接池,则它们只是返回到连接池)。指定的方法是使用'using‘语句:

代码语言:javascript
复制
// Execute stored proc to read data from repository
using (SqlConnection conn = new SqlConnection(this.connectionString))
{
    using (SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = "LoadFromRepository";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@ID", fileID);

        conn.Open();
        using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
        {
            if (rdr.Read())
            {
                filename = SaveToFileSystem(rdr, folderfilepath);
            }
        }
    }
}
票数 7
EN

Stack Overflow用户

发布于 2017-01-24 04:36:00

使用它可以获得每个连接池的准确计数(假设每个用户/主机进程使用相同的连接字符串)

代码语言:javascript
复制
SELECT 
DB_NAME(dbid) as DBName, 
COUNT(dbid) as NumberOfConnections,
loginame as LoginName, hostname, hostprocess
FROM
sys.sysprocesses with (nolock)
WHERE 
dbid > 0
GROUP BY 
dbid, loginame, hostname, hostprocess
票数 6
EN

Stack Overflow用户

发布于 2016-11-15 04:58:03

我知道这是旧的,但我认为这将是一个好主意来更新。如果需要精确的计数,那么可能还应该过滤列ECID。具有并行线程的SPID可以在sysprocesses中多次出现,过滤ECID=0将返回每个SPID的主线程。

代码语言:javascript
复制
SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses with (nolock)
WHERE 
    dbid > 0
    and ecid=0
GROUP BY 
    dbid, loginame
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/216007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档