如果您需要删除作业的日志记录或与作业相关的其他信息,您可能需要先清理相关的系统表。例如,如果作业与维护计划有关,您可能需要删除 sysmaintplan_log
、sysjobschedules
、sysmaintplan_subplans
和 sysjobs_view
表中的相关记录
在某些情况下,如果直接删除作业失败,可能是因为存在外键约束。在这种情况下,您可能需要按照以下步骤操作:
- 删除
sysmaintplan_log
中的记录。 - 删除
sysjobschedules
中的记录。 - 删除
sysmaintplan_subplans
中的记录。 - 最后删除
sysjobs_view
中的作业记录。
具体的 SQL 命令如下:
USE [msdb]
DECLARE @job_name VARCHAR(100)
SET @job_name = N'backup19.Subplan_1' -- SELECT * FROM sysjobs_view; 可以通过这句查询作业名称,直接拷过来,避免手动输错
--注:jobName为维护计划对应的jobName
--删除在计划里面的日志
DELETE
sysmaintplan_log
FROM
sysmaintplan_subplans AS subplans
INNER JOIN sysjobs_view AS syjobs ON subplans.job_id = syjobs.job_id
INNER JOIN sysmaintplan_log ON subplans.subplan_id =sysmaintplan_log.subplan_id
WHERE
(syjobs.name = @job_name)
--删除代理的作业
DELETE
sysjobschedules FROM sysjobs_view v
INNER JOIN sysjobschedules o ON v.job_id=o.job_id
WHERE
v.name=@job_name
--删除子计划
DELETE
sysmaintplan_subplans
FROM
sysmaintplan_subplans AS subplans
INNER JOIN sysjobs_view AS syjobs ON subplans.job_id = syjobs.job_id
WHERE
(syjobs.name = @job_name)
--删除作业
DELETE FROM msdb.dbo.sysjobs_view WHERE name = @job_name