如何取消处于Created Execution状态的SSIS作业并清理执行日志
解决方案
步骤1:确认目标执行实例ID
先执行以下查询精准定位要删除的作业,避免误操作:
USE SSISDB GO SELECT execution_id, folder_name, project_name, package_name, status, created_time FROM catalog.executions WHERE status = 1 -- 1代表Created状态,匹配你当前的作业状态 -- 可补充以下过滤条件缩小范围 AND project_name = N'你的项目名称' AND package_name = N'你的包名称.dtsx'
catalog.stop_operation仅支持处理运行中的执行实例(status=2),你当前的作业处于未启动的Created状态,所以无法调用该接口。
步骤2:删除目标执行实例
SSISDB提供原生存储过程catalog.delete_execution用于清理非运行状态的执行记录,包括Created、取消、失败、完成的实例,调用后会同步清理关联的日志、参数等数据,不会产生脏数据:
单条删除
USE SSISDB GO -- 替换为步骤1查询得到的execution_id EXEC catalog.delete_execution @execution_id = 替换为实际ID
批量删除
如果需要清理多个符合条件的实例,可以用游标批量处理:
USE SSISDB GO DECLARE @exec_id BIGINT DECLARE exec_cursor CURSOR FOR -- 此处过滤条件和步骤1保持一致 SELECT execution_id FROM catalog.executions WHERE status = 1 AND project_name = N'你的项目名称' OPEN exec_cursor FETCH NEXT FROM exec_cursor INTO @exec_id WHILE @@FETCH_STATUS = 0 BEGIN EXEC catalog.delete_execution @execution_id = @exec_id FETCH NEXT FROM exec_cursor INTO @exec_id END CLOSE exec_cursor DEALLOCATE exec_cursor
注意事项
- 执行操作的账号需要具备SSISDB的
ssis_admin角色权限,或对应项目的MODIFY权限 - 禁止直接修改/删除SSISDB的底层系统表,避免破坏数据一致性
- 操作前务必确认查询过滤条件准确,避免误删其他正常执行记录
内容的提问来源于stack exchange,提问作者user1443098
相关产品推荐
相关产品推荐

