我正在使用SQL Server 2008。
我正在尝试找出我的数据库服务器中的哪个连接正在使用我要删除的数据库,以便我可以终止该连接。
我可以select session_id, login_name from sys.dm_exec_sessions
等在数据库中查找会话,但是如何从session_id
到达会话所连接的数据库?
答案 0 :(得分:3)
答案 1 :(得分:1)
找出某个数据库上存在多少个连接的另一种方法是调用存储过程:
sp_who2 active - 用于活动进程
sp_who2 - 所有进程
答案 2 :(得分:0)
您需要与sys.sysprocesses
表联接以找到数据库。然后,您可以使用db_name
函数来获取名称。
下面是一个示例,显示了过去24小时内所有连接的(imho)最相关字段
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