我使用SQL Server 2008企业。我想看到任何活动的SQL Server连接,以及所有连接的相关信息,比如从哪个IP地址,连接到哪个数据库或其他东西。

是否存在解决此问题的现有命令?


当前回答

单击工具栏中的“活动监视器”图标。

从Thorsten的评论来看:

在SQL Server Management Studio中,右键单击服务器,从上下文菜单中选择“活动监视器”-或-使用键盘快捷键Ctrl + Alt + A。

参考资料:Microsoft Docs - SQL Server Management Studio (SSMS)中的Open Activity Monitor

其他回答

除了sp_who之外,还可以使用“无文档记录的”sp_who2系统存储过程,它可以提供更详细的信息。参见sp_who和sp_who2的区别。

您可以使用sp_who存储过程。

在Microsoft SQL Server数据库引擎实例中提供有关当前用户、会话和进程的信息。可以对信息进行筛选,以只返回那些不空闲的进程、属于特定用户的进程或属于特定会话的进程。

单击工具栏中的“活动监视器”图标。

从Thorsten的评论来看:

在SQL Server Management Studio中,右键单击服务器,从上下文菜单中选择“活动监视器”-或-使用键盘快捷键Ctrl + Alt + A。

参考资料:Microsoft Docs - SQL Server Management Studio (SSMS)中的Open Activity Monitor

执行的T-SQL命令如下:

SELECT * FROM sys.dm_exec_sessions WHERE status = 'running';
SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
    dbid > 0
GROUP BY 
    dbid, loginame
;

请参见Microsoft文档中的sys.sysprocesses。