如何查找并发SQL Server连接数

use*_*745 7 sql sql-server connection

我有一个SQL Server达到并发连接的最大限制.我有许多不同的服务器和服务同时连接到一个SQL Server.

我确实找到了另一个似乎有用的查询:

SELECT DB_NAME(dbid) AS DBName,
       COUNT(dbid)   AS NumberOfConnections,
       loginame      AS LoginName,
       nt_domain     AS NT_Domain,
       nt_username   AS NT_UserName,
       hostname      AS HostName
FROM   sys.sysprocesses
WHERE  dbid > 0
GROUP  BY dbid,
          hostname,
          loginame,
          nt_domain,
          nt_username
ORDER  BY NumberOfConnections DESC;
Run Code Online (Sandbox Code Playgroud)

但是,这给了我很好的连接数.我如何进一步挖掘这个以找到每个连接以及他们正在做什么动作?

小智 4

sql 命令“sp_who”提供有关 Microsoft SQL Server 数据库引擎 ( MSDN )实例中当前用户、会话和进程的信息从这里,您应该能够将结果发送到临时表中并按服务器名称对它们进行分组。

比如下面的...

CREATE TABLE #tbl (
      spid      int
    , ecid      int
    , status    varchar(50)
    , loginame  varchar(255)
    , hostname  varchar(255)
    , blk       varchar(50)
    , dbname    varchar(255)
    , cmd       varchar(255)
    , request_id varchar(255)
    )
GO

INSERT INTO #tbl EXEC sp_who

SELECT COUNT(0), hostname FROM #tbl group by hostname

DROP TABLE #tbl
GO
Run Code Online (Sandbox Code Playgroud)

  • 我确实找到了一个似乎有效的查询: SELECT DB_NAME(dbid) as DBName, COUNT(dbid) as NumberOfConnections, loginame as LoginName, nt_domain as NT_Domain, nt_username as NT_UserName, hostname as HostName FROM sys.sysprocesses WHERE dbid > 0 GROUP BY dbid、主机名、登录名、nt_domain、nt_username 按 NumberOfConnections DESC 排序;然而,这给了我很好的连接数量。我如何进一步深入挖掘以查看每个连接以及他们正在执行的操作? (4认同)