none
如何通过脚本自动停止Job的运行。 RRS feed

  • 问题

  • 环境sqlserver 2005

    update sysjobs set enabled=0

    where name='XXX';

    执行之后,发现Job的状态确实变成disabled。

    但是发现Job仍然执行。

    之后再次update sysschedule表,将其中enabled设置为0,之后检查该Job的schedule显示为disabled。但是仍然执行。请问到底要怎么修改系统表才能使得Job真正的不运行

    • 已编辑 Wison-Ho 2011年5月25日 6:37
    2011年5月25日 4:40

答案

  • 我不是说了么,你可以使用官方提供的存储过程来操作这个job。不要自己修改表内容。因为你认为是这里修改,可能其他地方也需要修改但是你还没修改到呢?!

    USE [msdb]
    GO
    EXEC msdb.dbo.sp_update_job @job_id=N'9e5ffa9c-5998-4301-b628-e4d3ece5e62d', @enabled=0
    GO
    
    

    修改jobid为你的jobid即可。

     


    family as water
    2011年5月25日 7:56

全部回复

  • 存在下次执行时间,并不不是仍然执行,你可以观察一下,到这个时间是否执行了。

    同时注意,不要随便直接修改系统数据库的内容,有些可能涉及多个地方的,建议通过开放的存储过程或者界面工具来修改。这样比较保险。

     


    family as water
    2011年5月25日 4:43
  • 因为我需要在一个Job执行之前将另外两个Job停止掉,这个Job执行之后,再enable另外2个Job。
    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    • 已编辑 Wison-Ho 2011年5月25日 6:37
    2011年5月25日 5:19
  • 我不是说了么,你可以使用官方提供的存储过程来操作这个job。不要自己修改表内容。因为你认为是这里修改,可能其他地方也需要修改但是你还没修改到呢?!

    USE [msdb]
    GO
    EXEC msdb.dbo.sp_update_job @job_id=N'9e5ffa9c-5998-4301-b628-e4d3ece5e62d', @enabled=0
    GO
    
    

    修改jobid为你的jobid即可。

     


    family as water
    2011年5月25日 7:56
  • 操作Job的系统自带存储过程如下。

    我觉得可能你理解有误,Start Job和Stop Job是将Job运行或停止运行,Enable Job和disable Job是不同的概念,是将Job设置成可用或不可用。

    Start Job: sp_start_job null,'[JobID]'

    Stop Job: sp_stop_job null,'[JobID]'

    Enable Job: sp_update_job '[JobID]',null,null,1

    Disable Job: sp_update_job '[JobID]',null,null,0

     

    2011年5月25日 9:28
  • 操作Job的系统自带存储过程如下。

    我觉得可能你理解有误,Start Job和Stop Job是将Job运行或停止运行,Enable Job和disable Job是不同的概念,是将Job设置成可用或不可用。

    Start Job: sp_start_job null,'[JobID]'

    Stop Job: sp_stop_job null,'[JobID]'

    Enable Job: sp_update_job '[JobID]',null,null,1

    Disable Job: sp_update_job '[JobID]',null,null,0

     

    你好 我所谓的停止Job的意思就是将job disable掉的意思。我之前没表达清楚。



    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年5月25日 9:43
  • 我不是说了么,你可以使用官方提供的存储过程来操作这个job。不要自己修改表内容。因为你认为是这里修改,可能其他地方也需要修改但是你还没修改到呢?!

    USE [msdb]
    GO
    EXEC msdb.dbo.sp_update_job @job_id=N'9e5ffa9c-5998-4301-b628-e4d3ece5e62d', @enabled=0
    GO
    
    

    修改jobid为你的jobid即可。

     


    family as water
    谢谢了 确实可行了。
    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年5月25日 10:09
  • You can pass job name to sp_update_job by the way, easiler than find job id.
    2011年5月25日 13:18
  • You can pass job name to sp_update_job by the way, easiler than find job id.
    2011年5月25日 13:18