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 代理做定时任务 ,

相关推荐
NineData11 小时前
NineData 迁移评估功能正式上线
数据库·dba
NineData17 小时前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师19 小时前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
全栈老石1 天前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
倔强的石头_2 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou643 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤4 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区5 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1775 天前
《从零搭建NestJS项目》
数据库·typescript
加号36 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql