【问题标题】:Is there any events after SQL Server job finished?SQL Server 作业完成后是否有任何事件?
【发布时间】:2012-05-08 00:44:42
【问题描述】:

我想获取最新的原始作业历史记录,并在每次作业完成后以我的格式保存它们。 我编写了一个存储过程来获取sp_help_jobhistory 的历史记录,然后格式化结果,然后将它们保存到一个新表中。

但是,什么时候调用这个存储过程呢?

作业完成时是否触发了某些事件?

也许还有其他一些解决方案。

感谢您的 cmets/answers。

【问题讨论】:

  • 您是否考虑将存储过程作为您工作的最后一步?这样,一旦成功,您的 SP 就会被调用。
  • 是的,我已经考虑过了。而且该解决方案无法获取当前正在运行的作业的历史记录。谢谢。

标签: sql-server jobs


【解决方案1】:

正如 Akhil 所说,只需在您的作业中添加一个步骤并确保它被正确链接(假设您的作业链步骤仅基于成功,在最后一步成功时,执行您的存储过程)。

【讨论】:

  • 此方法无法获取当前运行作业的历史记录。谢谢。
【解决方案2】:

我已经尝试了解决方案,并且效果很好。 Step 1:调用sp BeginHistoryLog,这个sp会通过job名从[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表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多