如何列出打开的 sql 服务器连接并关闭特定的连接
How to list opened sql server connections and close the specific one
我们有一个远程 SQL 服务器和使用它的 c# ERP 客户端程序。有时人们正在打开程序而忘记关闭它。在那种情况下,他们的 SQL 连接保持打开状态,我将无法进行某些操作。
是的,我可以通过设置计时器从客户端执行此操作,并不断检查它们是否执行任何操作或者它们是否挂机,但是,我希望能够在没有客户端自愿的情况下关闭连接。
综上所述,
1- 有什么方法可以检查打开所有与服务器的连接并通过 SQL 查询或命令列出它们。
2- 强制关闭我想要的特定连接,即使他们正在睡觉?
如有任何帮助,我们将不胜感激。非常感谢。
查看 table sys.dm_exec_sessions
和 KILL
声明
上市:
select *
from sys.dm_exec_sessions
用于通过 id 终止特定连接:
declare @session_id int;
set @session_id= ''
select
@session_id=cast(req.session_id as int) from sys.dm_exec_requests req where req.command='DbccSpaceReclaim'group by req.session_id
begin
declare @sql nvarchar(1000)
select @sql = 'kill ' + cast(@session_id as varchar(50))
exec sp_executesql @sql
end
我们有一个远程 SQL 服务器和使用它的 c# ERP 客户端程序。有时人们正在打开程序而忘记关闭它。在那种情况下,他们的 SQL 连接保持打开状态,我将无法进行某些操作。
是的,我可以通过设置计时器从客户端执行此操作,并不断检查它们是否执行任何操作或者它们是否挂机,但是,我希望能够在没有客户端自愿的情况下关闭连接。
综上所述, 1- 有什么方法可以检查打开所有与服务器的连接并通过 SQL 查询或命令列出它们。 2- 强制关闭我想要的特定连接,即使他们正在睡觉?
如有任何帮助,我们将不胜感激。非常感谢。
查看 table sys.dm_exec_sessions
和 KILL
声明
上市:
select *
from sys.dm_exec_sessions
用于通过 id 终止特定连接:
declare @session_id int;
set @session_id= ''
select
@session_id=cast(req.session_id as int) from sys.dm_exec_requests req where req.command='DbccSpaceReclaim'group by req.session_id
begin
declare @sql nvarchar(1000)
select @sql = 'kill ' + cast(@session_id as varchar(50))
exec sp_executesql @sql
end