SQL server 维护计划无法手动删除时的解决办法

SQL server 因为需要定时备份数据库,一般情况下大家都会选择在管理的维护计划中创建维护计划,因各种原因创建的维护计划不合适或者不用需要删除时,有时候会提示无法删除,各种提示报错。

以下是无法手动删除时,通过sql语句删除的步骤。

--【1】删除【管理】中的维护计划
use msdb
go
select * from sysmaintplan_plans
Delete sysmaintplan_plans where Name='MaintenancePlan'

--【2】删除【SQLserver代理】中的作业

USE [msdb]
Declare @job_name varchar(100)
--SET @job_name = N'jobName'
SET @job_name=N'数据库备份.Subplan_1'
--注: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

你可能感兴趣的:(sql)