我想获取最新的原始作业历史记录,并在每次作业完成后以我的格式保存它们。我编写了一个存储过程来获取历史记录sp_help_jobhistory
,然后格式化结果,然后将它们保存到一个新表中。
但是,什么时候调用这个存储过程呢?
作业完成时是否触发了某些事件?
也许还有其他一些解决方案。
感谢您的评论/回答。
我想获取最新的原始作业历史记录,并在每次作业完成后以我的格式保存它们。我编写了一个存储过程来获取历史记录sp_help_jobhistory
,然后格式化结果,然后将它们保存到一个新表中。
但是,什么时候调用这个存储过程呢?
作业完成时是否触发了某些事件?
也许还有其他一些解决方案。
感谢您的评论/回答。
正如 Akhil 所说,只需在您的工作中添加一个步骤并确保它被正确链接(假设您的工作链步骤仅基于成功,在最后一步成功时,执行您的存储过程)。
我已经尝试了该解决方案,并且效果很好。Step 1:调用sp BeginHistoryLog,这个sp会通过job name从[msdb].[dbo].[sysjobs]表中获取job的信息。并且这个 SP 会将初始数据写入记录历史消息的 JobHistory。
第2步:将调用执行实际工作的sp。
Step 3:会调用SP EndHistoryLog,这个SP会通过job id和step id从msdb.dbo.sysjobhistory和INNER JOIN [msdb].[dbo].[sysjobs]获取step2执行信息。而这个 sp 会将执行信息写入 JobHistory 表中。