昂捷论坛≡FAQ≡□-系统配置管理类 → SQL2005早期维护计划删除出错的解决


  共有25821人关注过本帖树形打印

主题:SQL2005早期维护计划删除出错的解决

帅哥哟,离线,有人找我吗?
zhq_2010
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:下士 帖子:18 积分:1348 威望:0 精华:0 注册:2010/4/14 13:56:51
SQL2005早期维护计划删除出错的解决  发帖心情 Post By:2010/9/3 13:29:58

/**//*-----------------------------
问题描述:
MsSqlServer2005中,由于计算机名修改或者删除、修改或重建维护计划的误操作引起
系统中有无法删除的维护计划,错误提示类似于:
“DELETE语句与 REFERENCE约束"FK_subplan_job_id"冲突。
该冲突发生于数据库"msdb",表"dbo.sysmaintplan_subplans",  column 'job_id'”
*/

--适用于mssql2005,可用于删除sql server 2005中使用界面环境无法删除的维护计划

use [msdb]
set nocount on
begin tran
declare @SubPlanName varchar(200)
--计划名称从Sqlserver 代理->作业查看,
--例如:BakUserDB.子计划,那该值就是“子计划”,赋值给下面的变量
set @SubPlanName='Subplan_1' --'子计划'

--获得外键约束用到的列
declare @subPlan_id varchar(100),@job_id varchar(100)
    ,@msx_job_id varchar(100),@Schedule_id varchar(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_id is not null and @SubPlan_id<>'')
delete from sysmaintplan_log where SubPlan_id=@SubPlan_id

if (@SubPlanName<>'' and @SubPlanName is not null) 
delete from sysmaintplan_SubPlans where SubPlan_Name=@SubPlanName

if (@Schedule_id is not null and @Schedule_id <>'')
delete from SysSchedules where Schedule_id=@Schedule_id

if (@job_id is not null and @job_id<>'')
delete from sysjobs where job_id=@job_id


/**//*--------------------------------------------------------------------
在上面的句子执行完后,该维护计划的接点依然存在,此时再更新msdb中对应的视图
---------------------------------------------------------------------*/
delete
  FROM msdb.dbo.sysmaintplan_plans
--执行上述代码结束后,刷新维护计划的节点,该节点成功删除。
commit tran
if @@error<>0 Print '执行失败'
else Print '执行成功'

set nocount off


使用IE9无法添加附件的解决方法 支持(0中立(0反对(0回到顶部