如何用SQL脚本来禁用作业?

解决方案 »

  1.   

    开始-- 运行-- net stop mssqlserveragent
      

  2.   

    USE msdb
    GO--禁用JOB
    DECLARE
    @enable_or_disable BIT,
    @job_name SYSNAME,
    @job_id UNIQUEIDENTIFIER
    SELECT
    @enable_or_disable = 0,
    @job_name = 'Job_Name'--得到job_id
    EXEC dbo.sp_verify_job_identifiers '@job_name', '@job_id', @job_name OUTPUT, @job_id EXEC dbo.sp_update_job
    @job_name = @job_name,
    @enabled = @enable_or_disableEXEC dbo.sp_update_job
    @job_id, 
    @enabled = @enable_or_disable
    --删除JOB
    /*
    IF EXISTS(SELECT TOP(1) 1 FROM dbo.sysjobs WITH(NOLOCK) WHERE [name] = @job_name)
    EXEC dbo.sp_delete_job @job_name = @job_name
    */
      

  3.   

    USE msdb
    GO--禁用JOB
    DECLARE
        @enable_or_disable BIT,
        @job_name SYSNAME,
        @job_id UNIQUEIDENTIFIER
    SELECT
        @enable_or_disable = 0,
        @job_name = 'Job_Name'--得到job_id
    EXEC dbo.sp_verify_job_identifiers '@job_name', '@job_id', @job_name OUTPUT, @job_id OUTPUT--用job_name停止
    EXEC dbo.sp_update_job
        @job_name = @job_name,
        @enabled = @enable_or_disable
    --或用job_id停止
    EXEC dbo.sp_update_job
        @job_id, 
        @enabled = @enable_or_disable
    --删除JOB
    /*
    IF EXISTS(SELECT TOP(1) 1 FROM dbo.sysjobs WITH(NOLOCK) WHERE [name] = @job_name)
        EXEC dbo.sp_delete_job @job_name = @job_name
    */
      

  4.   

    每次运行这个EXEC dbo.sp_update_job 都说找不到存储过程 为什么呢?
      

  5.   

    sp_update_job这个存储过程是在msdb数据库下的。EXEC msdb.dbo.sp_update_job ...