Bri*_*all 29

使用系统存储过程sp_who2.


Hut*_*tch 15

sp_who2实际上将提供数据库服务器的连接列表,而不是数据库.要查看单个数据库的连接(本例中为YourDatabaseName),您可以使用

DECLARE @AllConnections TABLE(
    SPID INT,
    Status VARCHAR(MAX),
    LOGIN VARCHAR(MAX),
    HostName VARCHAR(MAX),
    BlkBy VARCHAR(MAX),
    DBName VARCHAR(MAX),
    Command VARCHAR(MAX),
    CPUTime INT,
    DiskIO INT,
    LastBatch VARCHAR(MAX),
    ProgramName VARCHAR(MAX),
    SPID_1 INT,
    REQUESTID INT
)

INSERT INTO @AllConnections EXEC sp_who2

SELECT * FROM @AllConnections WHERE DBName = 'YourDatabaseName'
Run Code Online (Sandbox Code Playgroud)

(改编自SQL Server:sp_who2的过滤输出.)


Kyl*_*Mit 10

正如@Hutch指出的那样,其中一个主要限制sp_who2是它不带任何参数,所以默认情况下你不能对它进行排序或过滤.您可以将结果保存到临时表中,但是您必须提前声明所有类型(并记住DROP TABLE).

相反,你可以直接进入源代码 master.dbo.sysprocesses

我构造它来输出几乎完全相同的sp_who2生成,除了你可以轻松添加ORDER BYWHERE子句来获得有意义的输出.

SELECT  spid,
        sp.[status],
        loginame [Login],
        hostname, 
        blocked BlkBy,
        sd.name DBName, 
        cmd Command,
        cpu CPUTime,
        physical_io DiskIO,
        last_batch LastBatch,
        [program_name] ProgramName   
FROM master.dbo.sysprocesses sp 
JOIN master.dbo.sysdatabases sd ON sp.dbid = sd.dbid
ORDER BY spid 
Run Code Online (Sandbox Code Playgroud)

  • 您应该考虑使用 [sys.dm_exec_sessions](https://msdn.microsoft.com/en-us/library/ms176013.aspx),因为 [sys.sysprocesses](https://msdn.microsoft.com/en-us) /library/ms179881.aspx) 已弃用。 (2认同)

Mit*_*eat 5

还有谁活跃?:

谁活跃?是一个基于SQL Server 2005和2008动态管理视图(DMV)的综合服务器活动存储过程.将其视为大剂量合成代谢类固醇的sp_who2