TSQL-在代码中重新排列sql作业步骤顺序
我有几个SQL维护作业有50个以上的作业步骤。偶尔,需要为这些怪异的SQL作业之一添加一两步。我的问题是,我更喜欢每个步骤按字母顺序(如果可能),但要完成此操作,我需要按向上箭头无数次,然后等待屏幕刷新。我研究了sp_update作业过程,他们似乎没有解决这个问题。TSQL-在代码中重新排列sql作业步骤顺序
有没有一种方法可以在代码中完成?
SMO中的TSQL或API中没有用于更改作业步骤顺序的文档化过程。如果您在SSMS中重新排序作业步骤并生成操作脚本,您会看到它会删除并重新创建新订单中的所有作业步骤。
最明显的解决方案是开发自己的脚本或工具,通过删除和重新创建步骤来重新排序步骤,即重新创建SSMS功能,但是会根据自己的需要进行优化。
最后的办法是更新sysjobsteps.step_id
来修改执行顺序,但绝对不建议直接修改系统表。
感谢Pond!我之前的印象是,我的Google搜索结果为零。我会手工制作一个,但没有时间。+1愿望清单:) – kermitforney 2013-02-11 18:08:40
我发现这个问题,同时尝试重新排序而不清除它们并重新添加它们。
为了解决这种情况,我有三个步骤: (假设仅存在一个步骤进行的顺序,或使现有步骤都在字母顺序)
1)如果需要,删除您想要重新排序的步骤。 (如果你需要的任何现有值应该使用一个选择对msdb.dbo.sysjobsteps)
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 @[email protected], @step_name=N'YOURNEWSTEPNAME',
@[email protected],
etc...
经MS SQL Server 2008 R2测试。希望能帮助其他人看到这一点。
确认插入洗牌剩下的部分。插入步骤1还会将作业设置为从新插入的步骤开始,这比ssms通过向导为我执行的操作要多。 – Alex 2014-11-14 13:20:09
所以这些工作都不依赖于另一个工作? – 2013-02-11 17:33:24
不幸的不是。 :(我的目的是以某种方式将他们串联起来,我总是可以让他们陷入混乱状态,但按字母顺序排列,但这会让我感到非常困难:D – kermitforney 2013-02-11 17:37:52