日期:2014-05-17 浏览次数:20584 次
与维护计划有关的有三张表:
1.sysmaintplan_log:在维护计划运行后,会在此表中进行记录;
2.sysjobschedules:代理作业的作业信息
3.sysmaintplan_subplans:记录维护计划的子计划信息
4.sysjobs_view:相关的作业信息
这4张表有着PK和FK的关联关系,在删除作业时,就容易因为发生FK的冲突而导致失败。
具体的处理方法如下:
USE [msdb]
declare @job_name varchar(100)
set @job_name = N'HostpitalTestPlan.Subplan_Reset'
--删除在计划里面的日志
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
DELETE 语句与REFERENCE约束"FK_syscollector_sets_collection_sysjobs"冲突。
该冲突发生于数据库"msdb"。。。。。。。。。。。。。。。。
问题不都给你了嘛... 有外间约束嘛.. 在指定的表里..找到这个约束的行...把 主表的 约束行先删除..然后删除子表的约束行..你的这个作业就删除了!