打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL SERVER2005 删除作业失败 解决办法

SQL SERVER2005 删除作业失败 解决办法

DELETE 语句与 REFERENCE 约束"FK_subplan_job_id"冲突。该冲突发生于数据库"msdb",表"dbo.sysmaintplan_subplans", column 'job_id'。

语句已终止。 (Microsoft SQL Server,错误: 547)

 

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.1399&EvtSrc=MSSQLServer&EvtID=547&LinkId=20476

 

=============

下面是解决办法,执行下面代码就可以了:

 

 

与维护计划有关的有三张表:

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'作业名称'

 

--删除在计划里面的日志

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SqlServer中作业无法删除的解决办法
在SQL Server 2005上遇到了先删除已运行维护计划后,再删除代理中由其产生的作业...
SQL SERVER 作业浅析
SqlServer中代理作业实现总结
看看是如何让SQL Server定时作业?
导出SQL Server中所有Job的最简单方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服