Sql-Server

將代理作業的定義從“轉到下一步”批量更改為“退出作業報告失敗”

  • May 29, 2015

我們的伺服器中有多個步驟的代理作業,它們的所有步驟都定義為“轉到下一步”“失敗時”。因此,即使作業步驟失敗,操作員也不會收到通知,因為最終作業會成功。

如何修改所有作業中的所有步驟,以便在步驟失敗時作業失敗報告失敗?

編輯:我想最好的方法是動態使用 msdb.dbo.sp_update_jobstep 來更新所有步驟 @on_fail_action !=2

謝謝大家。

使用腳本批量更新作業步驟

USE MASTER
GO
SET QUOTED_IDENTIFIER ON
GO


   DECLARE  @job_id VARCHAR(1000),
            @Step_id INT

   DECLARE JobList CURSOR  
           FOR  

           SELECT  jb.job_ID,
                   jstp.step_id
           FROM    msdb.dbo.sysjobs jb
                   INNER JOIN msdb.dbo.sysjobsteps jstp ON jb.job_id = jstp.job_id
           WHERE   name = 'Jobname' 
           --AND Step_name <>'Step Name'     Add Step name to filter
           ORDER BY jb.job_ID, jstp.step_id


   OPEN JobList
       FETCH NEXT FROM JobList INTO @job_id,@Step_id
       WHILE @@FETCH_STATUS = 0
           BEGIN

                    -- Execute SP sp_update_jobstep to update Job Steps and pass 2(Quit with failure) as value to parameter @on_fail_action
                   EXEC msdb.dbo.sp_update_jobstep @job_id = @job_id, @step_id = @Step_id, @on_fail_action = 2 ---- 2 Quit with failure.


               FETCH NEXT FROM JobList INTO @job_id,@Step_id
          END
       CLOSE JobList
       DEALLOCATE JobList

注意:確保所有步驟都需要在失敗時更新為“退出作業報告失敗”,否則通過添加 WHERE 子句過濾它們

參考連結:https ://msdn.microsoft.com/en-us/library/ms189827.aspx

引用自:https://dba.stackexchange.com/questions/94727