none
erro ao excluir job RRS feed

  • Pergunta

  • Pessoal;

     

    Quando vou excluir um job que criei para plano de manutenção acontece o sequinte erro:

     

     

    Msg 547, Level 16, State 0, Procedure sp_delete_job, Line 178

    The DELETE statement conflicted with the REFERENCE constraint "FK_subplan_job_id". The conflict occurred in database "msdb", table "dbo.sysmaintplan_subplans", column 'job_id'.

    The statement has been terminated.

    segunda-feira, 10 de dezembro de 2007 19:05

Respostas

  • Solução para excluir job que não existe mais plano de execução:

     

    Here is the SQL to fix this:

    –NOTE: Replace “MaintenancePlan” with the value in the Jobs under SQL Server Agent, put the job name

    USE [msdb]
    declare @job_name varchar(100)
    set @job_name = N’MaintenancePlan’

    –First, delete the logs for the plan

    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 the subplan

    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 the actual job (You can do the same thing through Management Studio (Enterprise Manager)

    delete
    from msdb.dbo.sysjobs_view where name = @job_name

    If you get this error:

    Msg 547, Level 16, State 0, Line 27
    The DELETE statement conflicted with the REFERENCE constraint “FK__sysjobsch__job_i__276EDEB3″. The conflict occurred in database “msdb”, table “dbo.sysjobschedules”, column ‘job_id’.

     

     

    Retirado de:

    http://gedzuks.wordpress.com/2007/04/20/sql-server-2005-delete-maintenance-plan-error/

    quarta-feira, 14 de maio de 2008 13:47

Todas as Respostas

  • E aí Ygo!! Td tranquilo??

     

    Se o plano de manutenção ainda existe, tente desativar o agendamento, ou desmarcar o agendamento.

     

    Caso não exista mais, vai ser necessário vasculhar a MSDB para encontrar esse relacionamento, os registros que estão conflitando e excluir na mão.

     

     

    Abraço!!

    segunda-feira, 10 de dezembro de 2007 19:11
  • Ygo,

     

    Analisando a mensagem de erro, esta informando que este objeto que você esta tentando excluir esta fazendo referência e conflitando com outro objeto.

     

    Estes jobs de plano de execução ainda existem no seu Servidor?

    segunda-feira, 10 de dezembro de 2007 19:28
  • Sim!

    Sei que e o relacionamento que esta impedindo a exclusao, mas qualquer job do plano de manutencao a excluir acontece isso.

    O plano de manutenção ja foi excluido!

     

    segunda-feira, 10 de dezembro de 2007 19:38
  •  

    Você pode excluir o plano de manutenção?? É a forma recomendável, ou desative aquela porção do plano. Se for um agendamento de backup de log, tire somente esta parte do plano, deve deletar o job.

     

     

    Abraço

    segunda-feira, 10 de dezembro de 2007 19:42
  • Solução para excluir job que não existe mais plano de execução:

     

    Here is the SQL to fix this:

    –NOTE: Replace “MaintenancePlan” with the value in the Jobs under SQL Server Agent, put the job name

    USE [msdb]
    declare @job_name varchar(100)
    set @job_name = N’MaintenancePlan’

    –First, delete the logs for the plan

    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 the subplan

    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 the actual job (You can do the same thing through Management Studio (Enterprise Manager)

    delete
    from msdb.dbo.sysjobs_view where name = @job_name

    If you get this error:

    Msg 547, Level 16, State 0, Line 27
    The DELETE statement conflicted with the REFERENCE constraint “FK__sysjobsch__job_i__276EDEB3″. The conflict occurred in database “msdb”, table “dbo.sysjobschedules”, column ‘job_id’.

     

     

    Retirado de:

    http://gedzuks.wordpress.com/2007/04/20/sql-server-2005-delete-maintenance-plan-error/

    quarta-feira, 14 de maio de 2008 13:47