/**//*----------------------------- 问题描述: MsSqlServer2005中,由于计算机名修改或者删除、修改或重建维护计划的误操作引起 系统中有无法删除的维护计划,错误提示类似于: “DELETE语句与 REFERENCE约束"FK_subplan_job_id"冲突。 该冲突发生于数据库"msdb",表"dbo.sysmaintplan_subplans", column 'job_id'” */ --070319 whbo --适用于mssql2005,可用于删除sql server 2005中使用界面环境无法删除的维护计划 use[msdb] set nocount on begintran declare@SubPlanNamevarchar(200) --计划名称从Sqlserver 代理->作业查看, --例如:BakUserDB.子计划,那该值就是“子计划”,赋值给下面的变量 set@SubPlanName='Subplan_1'--'子计划' --获得外键约束用到的列 declare@subPlan_idvarchar(100),@job_idvarchar(100) ,@msx_job_idvarchar(100),@Schedule_idvarchar(100) select@job_id=job_id,@msx_job_id=msx_job_id, @subPlan_id=subPlan_id from sysmaintplan_SubPlans where SubPlan_name=@SubPlanName --按照顺序删除记录 if (@SubPlan_idisnotnulland@SubPlan_id<>'') deletefrom sysmaintplan_log where SubPlan_id=@SubPlan_id if (@SubPlanName<>''and@SubPlanNameisnotnull) deletefrom sysmaintplan_SubPlans where SubPlan_Name=@SubPlanName if (@Schedule_idisnotnulland@Schedule_id<>'') deletefrom SysSchedules where Schedule_id=@Schedule_id if (@job_idisnotnulland@job_id<>'') deletefrom sysjobs where job_id=@job_id /**//*-------------------------------------------------------------------- 在上面的句子执行完后,该维护计划的接点依然存在,此时再更新msdb中对应的视图 (该视图我是通过Sql Server Profiler监测到的)代码如下: ---------------------------------------------------------------------*/ delete FROM msdb.dbo.sysmaintplan_plans --执行上述代码结束后,刷新维护计划的节点,该节点成功删除。 committran if@@error<>0Print'执行失败' elsePrint'执行成功' set nocount off /**//* select * from SysSchedules select * from sysjobs select * from sysmaintplan_SubPlans */