SQL Server 2005上先删除已运行维护计划后,再删除代理中由其产生的作业时,提示删除失败,如何处理?_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1956 | 回复: 0   主题: SQL Server 2005上先删除已运行维护计划后,再删除代理中由其产生的作业时,提示删除失败,如何处理?        下一篇 
shylone
注册用户
等级:下士
经验:199
发帖:90
精华:0
注册:2011-11-24
状态:离线
发送短消息息给shylone 加好友    发送短消息息给shylone 发消息
发表于: IP:您无权察看 2015-4-22 16:58:54 | [全部帖] [楼主帖] 楼主

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

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

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

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

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论