4

我有一些 SQL 维护作业,其中有超过 50 个作业步骤。有时,需要在这些可怕的 SQL 作业中添加一两个步骤。我遇到的问题是我更喜欢每个步骤都按字母顺序(如果可能的话),但要做到这一点,我需要无数次按下向上箭头并等待屏幕刷新。我查看了 sp_update 作业程序,他们似乎没有解决这个问题。

有没有办法可以在代码中完成?

4

2 回答 2

4

我在尝试重新排序步骤而不将它们全部清除并重新添加它们时发现了这个问题。

为了解决这种情况,我有一个三步流程:(假设只有一个步骤是乱序的,或者现有的步骤都是 alpha-order 的)

1) 如有必要,删除您要重新排序的步骤。(如果您需要任何现有值,您应该对 msdb.dbo.sysjobsteps 使用 select)

EXEC msdb.dbo.sp_delete_jobstep @job_id = @YOURJOBID, @step_id = @OUTOFORDERSTEPID

2)使用比较来获得你的新步骤应该在的位置。

@newStepPosition = SELECT MIN(step_id) FROM msdb.dbo.sysjobsteps WHERE job_id = @YOURJOBID AND step_name > N'YOURNEWSTEPNAME'

3) 只需添加作业步骤,指定位置。所有现有的步骤将随机排列。例如,在 3 处插入会将 3 推到 4、4 推到 5 等。

EXEC msdb.dbo.sp_add_jobstep @job_id=@YOURJOBID, @step_name=N'YOURNEWSTEPNAME',
  @step_id=@newStepPosition,
  etc...

使用 MS SQL Server 2008 R2 测试。希望能帮助其他看到这个的人。

于 2014-01-02T18:26:58.073 回答
0

SMO 中的 TSQL 或 API 中没有记录的过程来更改作业步骤的顺序。如果您在 SSMS 中重新排序作业步骤并生成操作脚本,您将看到它会删除并按新顺序重新创建所有作业步骤。

最明显的解决方案是开发您自己的脚本或工具,通过删除和重新创建步骤来重新排序步骤,即重新创建 SSMS 功能,但针对您自己的需要进行了优化。

最后的办法是更新sysjobsteps.step_id修改执行顺序,但绝对不建议直接修改系统表。

于 2013-02-11T17:55:12.950 回答