SqlServer中作業無法刪除的解決辦法


在刪除之前添加的作業過程中,由於個系統表之間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表即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM