我使用SQL Server 2008企业。我想看到任何活动的SQL Server连接,以及所有连接的相关信息,比如从哪个IP地址,连接到哪个数据库或其他东西。
是否存在解决此问题的现有命令?
我使用SQL Server 2008企业。我想看到任何活动的SQL Server连接,以及所有连接的相关信息,比如从哪个IP地址,连接到哪个数据库或其他东西。
是否存在解决此问题的现有命令?
当前回答
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。
其他回答
执行的T-SQL命令如下:
SELECT * FROM sys.dm_exec_sessions WHERE status = 'running';
您可以使用sp_who存储过程。
在Microsoft SQL Server数据库引擎实例中提供有关当前用户、会话和进程的信息。可以对信息进行筛选,以只返回那些不空闲的进程、属于特定用户的进程或属于特定会话的进程。
除了sp_who之外,还可以使用“无文档记录的”sp_who2系统存储过程,它可以提供更详细的信息。参见sp_who和sp_who2的区别。
MS的查询解释了KILL命令的使用,提供了连接的信息,非常有用:
SELECT conn.session_id, host_name, program_name,
nt_domain, login_name, connect_time, last_request_end_time
FROM sys.dm_exec_sessions AS sess
JOIN sys.dm_exec_connections AS conn
ON sess.session_id = conn.session_id;
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。