在刪除之前添加的作業過程中,由於個系統表之間PK和FK的關聯關系,會導致刪除失敗,所以要先處理這些系統表。
與維護計划有關的表:
1.sysmaintplan_log(記錄維護計划運行log);
2.sysjobschedules(記錄代理作業的作業信息);
3.sysmaintplan_subplans(記錄維護計划的子計划信息);
4.sysjobs_view(相關的作業信息)
以上這4張表有着PK和FK的關聯關系,在刪除作業時,很容易因為發生FK的沖突而導致失敗。
具體的處理方法如下:
use [msdb] declare @job_name varchar(100) set @job_name = N'jobName' --注: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
特別注意必須首先刪除sysmaintplan_log,若表里只有id一致的記錄則直接清空sysmaintplan_log,sysmaintplan_subplans表即可。
