在SQL Server 2008上遇到了删除作业失败的问题。
删除 对于 Job“temp1.Subplan_1”失败。 (Microsoft.SqlServer.Smo)
DELETE 语句与 REFERENCE 约束"FK_subplan_job_id"冲突。该冲突发生于数据库"msdb",表"dbo.sysmaintplan_subplans", column 'job_id'。
语句已终止。 (Microsoft SQL Server,错误: 547)
与维护计划有关的有三张表:
1.sysmaintplan_log:在维护计划运行后,会在此表中进行记录;
2.sysmaintplan_subplans:记录维护计划的子计划信息
3.sysjobs_view:相关的作业信息
这三张表有着PK和FK的关联关系,在删除作业时,就容易因为发生FK的冲突而导致失败。
具体的处理方法如下:
USE [msdb]
declare @job_name varchar(100)
set @job_name = N'test.Subplan_1'
--删除在计划里面的日志
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 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)
--删除作业,也可以直接在Mangement Studio里面直接删除
delete
from msdb.dbo.sysjobs_view where name = @job_name
转载于:https://www.cnblogs.com/ding-ding/archive/2012/04/10/%e6%b0%b8%e6%81%92%e7%9e%ac%e9%96%93.html