【问题标题】:TSQL- Rearrange sql job step order in codeTSQL-在代码中重新排列 sql 作业步骤顺序
【发布时间】:2013-01-26 20:47:50
【问题描述】:

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

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

【问题讨论】:

  • 所以这些工作都不依赖于另一个工作?
  • 很遗憾没有。 :(我考虑过以某种方式级联它们。我总是可以让它们处于混乱状态......按字母顺序但这会让我发疯。:D

标签: sql sql-server-2008 tsql sql-server-2008-r2 database-administration


【解决方案1】:

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

为了解决这种情况,我有一个三步过程: (假设只有一个步骤乱序,或者现有的步骤都是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 测试。希望能帮助其他看到这个的人。

【讨论】:

  • 确认插入会随机播放其余部分。插入步骤 1 还将作业设置为从新插入的步骤开始,这比 ssms 通过向导为我所做的更多。
【解决方案2】:

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

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

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

【讨论】:

  • 谢谢池塘!在我的谷歌搜索产生零结果后,我开始有这种印象。我会手工制作一个,但没有时间。 +1 愿望清单 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多