我的PHP/MS Sql Server 2005/win 2003应用程序偶尔会变得非常无响应,内存/cpu使用率没有达到峰值。如果我试图从sql management studio打开任何新的连接,它就会挂在打开的连接对话框中。如何确定活动连接的总数ms sql server 2005
发布于 2008-10-19 10:47:07
正如@jwalkerjr所提到的,您应该在代码中处理连接(如果启用了连接池,则它们只是返回到连接池)。指定的方法是使用'using
‘语句:
// 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);
}
}
}
}
发布于 2017-01-24 04:36:00
使用它可以获得每个连接池的准确计数(假设每个用户/主机进程使用相同的连接字符串)
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
发布于 2016-11-15 04:58:03
我知道这是旧的,但我认为这将是一个好主意来更新。如果需要精确的计数,那么可能还应该过滤列ECID。具有并行线程的SPID可以在sysprocesses中多次出现,过滤ECID=0将返回每个SPID的主线程。
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
https://stackoverflow.com/questions/216007
复制相似问题