Sql-Server
從 sql 代理作業中刪除一個步驟
我將一堆作業從 HA 伺服器複製到正常伺服器,我只需要刪除這些作業的第一步(檢查主要)而不是所有作業。有什麼建議嗎?這是我用來查找它們的查詢
SELECT a.job_id ,name ,enabled ,b.command ,b.step_name ,b.step_id FROM msdb.dbo.sysjobs a INNER JOIN msdb.dbo.sysjobsteps b ON a.job_id = b.job_id where step_name like '%check prima%'
您可以嘗試動態生成 TSQL 以刪除特定步驟。這是一個例子:
SELECT 'exec msdb.dbo.sp_delete_jobstep @job_id=''' + convert(varchar(50), a.job_id) + '''' + ', @step_id = ' + convert(varchar(30), b.step_id) as CmdToExec , a.job_id ,name ,enabled ,b.command ,b.step_name ,b.step_id FROM msdb.dbo.sysjobs a INNER JOIN msdb.dbo.sysjobsteps b ON a.job_id = b.job_id where b.step_name like '%test%' and b.step_id=1
然後,從上面的選擇中手動執行 CmdToExec 列中的語句
CmdToExec exec msdb.dbo.sp_delete_jobstep @job_id='02CA12AD-FAAC-4788-9D31-14143F0ED739', @step_id = 1 exec msdb.dbo.sp_delete_jobstep @job_id='41B86E98-F033-4847-8104-42FD6B49A21F', @step_id = 1
一個更快/更安全的方法可能是更新步驟 1 中的命令以執行,如果它不是主要的,或者不在 AG 中,或者其他什麼。
update msdb.dbo.sysjobsteps set command = 'print ''removed primary check code''' where command = 'your old code' and step_id = 1 and step_name like '%check prima%'