ker*_*ney 5 sql t-sql database-administration sql-server-2008 sql-server-2008-r2
我有一些 SQL 维护作业,其中作业步骤超过 50 个。有时,需要向这些庞大的 SQL 作业之一添加一两个步骤。我遇到的问题是,我更喜欢每个步骤都按字母顺序排列(如果可能的话),但为了实现这一点,我需要无数次按向上箭头并等待屏幕刷新。我研究了 sp_update 作业过程,但它们似乎没有解决这个问题。
有没有一种方法可以在代码中实现这一点?
小智 6
我在尝试重新排序步骤而不清除所有步骤并重新添加它们时发现了这个问题。
为了解决这种情况,我有一个三步流程:(假设只有一个步骤失序,或者现有步骤全部按 alpha 顺序排列)
1) 如有必要,删除要重新排序的步骤。(如果需要任何现有值,则应该对 msdb.dbo.sysjobsteps 使用选择)
EXEC msdb.dbo.sp_delete_jobstep @job_id = @YOURJOBID, @step_id = @OUTOFORDERSTEPID
Run Code Online (Sandbox Code Playgroud)
2)通过比较来确定你的新步骤应该处于的位置。
@newStepPosition = SELECT MIN(step_id) FROM msdb.dbo.sysjobsteps WHERE job_id = @YOURJOBID AND step_name > N'YOURNEWSTEPNAME'
Run Code Online (Sandbox Code Playgroud)
3) 只需添加作业步骤,指定位置。所有现有步骤都会向下移动。例如,在 3 处插入会将 3 推到 4、4 推到 5,等等。
EXEC msdb.dbo.sp_add_jobstep @job_id=@YOURJOBID, @step_name=N'YOURNEWSTEPNAME',
@step_id=@newStepPosition,
etc...
Run Code Online (Sandbox Code Playgroud)
使用 MS SQL Server 2008 R2 进行测试。希望能帮助其他人看到这个。
SMO 中的 TSQL 或 API 中没有记录的过程来更改作业步骤的顺序。如果您在 SSMS 中重新排序作业步骤并生成操作脚本,您将看到它删除并重新创建新顺序中的所有作业步骤。
最明显的解决方案是开发您自己的脚本或工具,通过删除并重新创建步骤来重新排序步骤,即重新创建 SSMS 功能,但根据您自己的需求进行优化。
最后的办法是更新sysjobsteps.step_id
来修改执行顺序,但绝对不建议直接修改系统表。
归档时间: |
|
查看次数: |
3913 次 |
最近记录: |