0

我们有一个远程 SQL 服务器和使用它的 c# ERP 客户端程序。有时人们打开程序却忘记关闭它。在这种情况下,他们的 SQL 连接保持打开状态,我将无法执行某些操作。

是的,我可以通过设置计时器从客户端执行此操作,并继续检查它们是否执行任何操作或者它们是否处于 AFK 状态,但是,我希望能够在没有客户端意愿的情况下关闭连接。

总而言之,1-有没有办法检查打开的所有服务器连接并通过 SQL 查询或命令列出它们。2-强制关闭我想要的特定连接,即使他们正在睡觉?

任何帮助,将不胜感激。太感谢了。

4

2 回答 2

1

查看表格sys.dm_exec_sessionsKILL语句

于 2020-06-01T11:47:44.947 回答
0

For Listing:

select *
from sys.dm_exec_sessions

For Killing specific connection by 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
于 2020-06-01T12:12:52.857 回答