Sql-Server
將代理作業的定義從“轉到下一步”批量更改為“退出作業報告失敗”
我們的伺服器中有多個步驟的代理作業,它們的所有步驟都定義為“轉到下一步”“失敗時”。因此,即使作業步驟失敗,操作員也不會收到通知,因為最終作業會成功。
如何修改所有作業中的所有步驟,以便在步驟失敗時作業失敗報告失敗?
編輯:我想最好的方法是動態使用 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