以执行的sql中有"gzjh"关键字为例(大家示实际情况调整即可):
– 1.创建一个临时表存储 sp_who3 的结果
IF OBJECT_ID(‘tempdb…#sp_who3’) IS NOT NULL
DROP TABLE #sp_who3;
–2. 创建临时表
CREATE TABLE #sp_who3 (
SPID INT,
SQLStatement NVARCHAR(MAX)
);
–3. 直接插入动态管理视图查询结果
INSERT INTO #sp_who3
SELECT
session_id AS SPID,
text AS SQLStatement
FROM sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
WHERE text LIKE ‘%gzjh%’ – 只筛选包含 ‘gzjh’ 的 SQL 语句
–4. 检查数据
SELECT * FROM #sp_who3;
–5. 动态生成 KILL 脚本
DECLARE @sql NVARCHAR(MAX) = ‘’;
SELECT @sql = @sql + 'KILL ’ + CAST(SPID AS NVARCHAR) + '; ’
FROM #sp_who3
WHERE SQLStatement LIKE ‘%gzjh%’; – 筛选 SQLStatement 包含 ‘gzjh’ 的行
–6. 打印并执行批量 KILL
PRINT @sql; – 可选:先查看生成的 KILL 脚本
EXEC sp_executesql @sql; – 执行批量 KILL