zoukankan      html  css  js  c++  java
  • SQL SERVER代理作业删除失败问题

    在SQL Server 2005上遇到了先删除已运行维护计划后,再删除代理中由其产生的作业时,提示删除失败。
     
    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
  • 相关阅读:
    生成组合算法
    今天复习C++的const,又学到了很多内容,总结一下[原创]
    文字和图片在一行,文字靠左,图片靠右(div)[转]
    联合查询
    排序查询
    分页查询 ★
    分组查询
    基础查询
    条件查询
    连接查询 (二)sql99语法
  • 原文地址:https://www.cnblogs.com/lrl45/p/5135420.html
Copyright © 2011-2022 走看看