繁体   English   中英

如何找出连接正在使用哪个数据库?

[英]How do I find out which database a connection is using?

我正在使用 SQL Server 2008。

我试图找出我的数据库服务器中的哪个连接正在使用我想要删除的数据库,以便我可以终止该连接。

我可以select session_id, login_name from sys.dm_exec_sessions以在数据库中查找会话,但是如何从session_id获取会话所连接的数据库?

找出某个数据库上存在多少连接的另一种方法是调用存储过程:

sp_who2 active -- 用于活动进程

sp_who2 -- 所有进程

您需要加入sys.sysprocesses表才能找到数据库。 然后,您可以使用db_name函数来获取名称。

这是一个示例,显示了过去 24 小时内所有连接的一些(恕我直言)最相关的字段

select 
    db_name(p.dbid),
    s.program_name, c.client_net_address, s.client_interface_name, s.host_name, s.login_name, s.nt_user_name, 
    c.connect_time, c.auth_scheme, c.local_net_address, c.local_tcp_port
FROM 
    sys.dm_exec_sessions s
    join sys.dm_exec_connections c ON s.session_id = c.session_id
    join sys.sysprocesses p on p.spid = c.session_id
where
    and connect_time > DATEADD(day,-1, GETDATE())
order by c.connect_time desc

尝试以下操作:

select db_name(DB_ID())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM