![](/img/trans.png)
[英]How do I find out which SQL queries utilize the tables in a certain database programmatically?
[英]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.