SQL SERVER 定时清除状态为Sleeping的会话进程

业务场景:因设备端测试程序是供应商写的程序,但有个低级的问题就是每次执行完SQL后会话不进行关闭,导致SQL服务端会话进程高达30000个,这也进一步的使SQL SERVER服务器性能大大降低并有可能宕机。

解决方案:因没有供应商Labview源代码,无法修改程序。只能退而求其次,从SQL SERVER服务器端找到解决此问题的方法。即本文主题->SQL SERVER数据库创建定时清除状态的Sleeping的会话job

具体方法如下:

1、进入Microsoft SQL Server Management Studio界面即SSMS

2、找到SQL Server代理选项

3、找到作业新增作业

4、自定义作业名称

5、在步骤中添加新建一个作业步骤

 6、添加T-SQL命令,点确定

declare @deleteSleepSession nvarchar(100) --申明一个变量
declare tablelist cursor local  --申明一个本地游标
for
select 'kill '+rtrim(spid)   
from master.dbo.sysprocesses  --数据库系统进程表
where status='sleeping' --状态为休眠状态
and spid>=50   --因spid<=50的为SQL Server本身的系统进程
and last_batch< DATEADD(MINUTE,-10,GETDATE())   --最后批处理时间大于当前时间10分钟
and login_time< DATEADD(MINUTE,-10,GETDATE())  --提交时间大于当前时间10分钟
open tablelist   
fetch tablelist into @deleteSleepSession  --执行查询,返回结果集插入至游标中
while @@fetch_status=0  
-- 0  FETCH 语句成功
-- -1 FETCH 语句失败或此行不在结果集中
-- -2 被提取的行不存在
begin
exec(@deleteSleepSession) --执行变量
fetch tablelist into @deleteSleepSession  
end
close tablelist       --关闭游标
deallocate tablelist  --删除游标引用

 7.新建作业计划-频率与每天频率及开启时间自定义,注:频率与每天频率是同时生效的

8.最后点确认就关闭,等待测试执行效果即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值