近期需要使用SQL脚本对作业进行操作,经过一翻尝试后,终于实现。特留下笔记以便日后使用
USE [msdb]
GO
DECLARE @Sqljob varchar(255) --要删除的作业名称
DECLARE @jobId varchar(255) --作业编号SET @Sqjob = 'jobs' --赋值作业
IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name = @Sqljob)
BEGIN
--删除在计划的作业日志
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 = @Sqljob)
--删除代理的作业
DELETE sysjobschedules
FROM sysjobs_view view INNER JOIN sysjobschedules jobs ON view.job_id = jobs.job_id where view.name = @Sqljob--删除子计划
DELETE sysmaintplan_subplans
FROM sysmaintplan_subplans AS subplans INNER JOIN
sysjobs_view as syjobs ON subplans.job_id = syjobs.job_id
WHERE (syjobs.name = @Sqljob)--删除作业
DELETE FROM msdb.dbo.sysjobs_view WHERE name = @Sqljob
END
本文提供了一段SQL脚本,用于彻底删除SQL Server中的作业及其相关日志、计划和子计划。通过设置作业名称,可以精确地定位并移除目标作业。
6016

被折叠的 条评论
为什么被折叠?



