当前位置: 代码迷 >> Sql Server >> sql server 2008 剔除 Data_Collection 作业失败
  详细解决方案

sql server 2008 剔除 Data_Collection 作业失败

热度:427   发布时间:2016-04-25 00:20:10.0
sql server 2008 删除 Data_Collection 作业失败
最近在玩这个东西,想删除的时候,那些作业都报错。
信息为:

DELETE 语句与REFERENCE约束"FK_syscollector_sets_collection_sysjobs"冲突。
该冲突发生于数据库"msdb"。。。。。。。。。。。。。。。。

我记得是哪位大牛说过这个确实是删除不掉要用一个微软未发布的一个存储过程来删除
------解决方案--------------------



与维护计划有关的有三张表:
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

------解决方案--------------------
这个删除不掉,大概要在SQL2012解决。
http://www.cnblogs.com/nzperfect/archive/2010/12/22/1913996.html
------解决方案--------------------

DELETE 语句与REFERENCE约束"FK_syscollector_sets_collection_sysjobs"冲突。
该冲突发生于数据库"msdb"。。。。。。。。。。。。。。。。

问题不都给你了嘛... 有外间约束嘛.. 在指定的表里..找到这个约束的行...把 主表的 约束行先删除..然后删除子表的约束行..你的这个作业就删除了!

------解决方案--------------------
同意3楼的看法,不晓得2楼的答案是咋个来的- -好飘渺
  相关解决方案