sql server 自动kill 查询超过20分钟的语句

起源于同事的烂sql 容易拖垮 数据服务器,

周末没有人监控数据库,好几次导致主从数据库同步失败 ,不得不自动kill 烂sql

语句如下 :

-- 声明变量来存储超过20分钟的查询的会话ID

DECLARE @kill_sessions TABLE (session_id INT);

DECLARE @sql NVARCHAR(MAX) = '';

-- 终止找到的会话

DECLARE @session_id INT;

-- 插入超过20分钟的查询的会话ID到表中

INSERT INTO @kill_sessions

SELECT session_id

FROM sys.dm_exec_requests AS req

CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) AS st

WHERE

-- 过滤出执行时间超过20分钟的查询

DATEDIFF(SECOND, req.start_time, GETDATE()) > 1200

AND st.text NOT LIKE '%--%kill_sessions%--%' and req.commAND='select';-- 避免终止这个脚本自身的会话

--select * from @kill_sessions

-- SELECT TOP 1 @session_id = session_id FROM @kill_sessions;

-- PRINT 'Killing session ID: ' + CAST(@session_id AS VARCHAR(10));

--DELETE FROM @kill_sessions WHERE session_id = @session_id;

--KILL @session_id;

WHILE EXISTS (SELECT 1 FROM @kill_sessions)

BEGIN

SELECT TOP 1 @session_id = session_id FROM @kill_sessions;

PRINT 'Killing session ID: ' + CAST(@session_id AS VARCHAR(10));

select @sql= @sql + 'KILL '+cast( @session_id as varchar(10))

EXEC sp_executesql @sql

DELETE FROM @kill_sessions WHERE session_id = @session_id;

END;

再在sql server 代理做定时任务 ,

相关推荐
小小龙学IT10 分钟前
Python SQLAlchemy 2.0 深度解析:从 Core 到 ORM 的数据访问双引擎
开发语言·数据库·python
DongQiShanRen33 分钟前
裁决台账双向互校(上):名册与实物的第一道对账
java·linux·运维·数据库·人工智能·自然语言处理·数据挖掘
ShineWinsu37 分钟前
对于Redis:AOF持久化的解析
linux·数据库·redis·缓存·面试·持久化·aof
仍然.1 小时前
Redis---集群
数据库·redis·缓存
Allstar_431 小时前
DV/PV 验证管理:为量产放行提供完整证据链——全星研发项目管理 APQP 软件系统汽车电子行业专业级研发项目管理平台
数据库·汽车
小范的技术工坊1 小时前
向量数据库解决了什么问题?
数据库
小蒜学长1 小时前
在线保险服务与管理平台的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·服务平台·在线保险
做运维的阿瑞2 小时前
SQL 面试高频:用户、商品、订单三表查询全解析
数据库·sql·mysql
CJi0NG3 小时前
【自用】MySQL - 语法:DDL、DML、DQL、DCL
数据库·mysql
姜鱼问生3 小时前
数据库备份 + 灾难恢复演练:从 dump 恢复全库
运维·数据库