【问题标题】:Aggregate data from msdb.dbo.sysjobhistory从 msdb.dbo.sysjobhistory 聚合数据
【发布时间】:2016-05-31 11:34:15
【问题描述】:

每次我运行代理作业时,它都会将一些数据放入日志中。我可以像这样通过 T-SQL 访问这些数据:SELECT * FROM msdb.dbo.sysjobhistory WHERE step_id = 0。它将显示有关工作的摘要信息。

问题是如果有一个步骤失败但“失败时操作”是“转到下一步”run_status 将显示成功。

我尝试从step_id <> 0 汇总数据,但我不知道如何区分每次运行的作业。

你能帮我解决这个问题吗?最好的结果是附加列,其中包含第一次查询显示的作业中出现的不同状态列表。

我想要实现的是每天运行的工作(其中一些在一天中多次运行)的每日报告。

【问题讨论】:

    标签: sql-server sql-agent


    【解决方案1】:

    尝试将您的查询加入到:

    SELECT * FROM [dbo].[sysjobsteps]
    

    这包括字段 last_run_outcome。

    完整表格的MSDN链接:

    https://msdn.microsoft.com/en-us/library/ms187387.aspx

    【讨论】:

    • 上次运行非常好,但是以前的运行呢?
    • 我认为作业历史始终是 SQL 代理的问题,除非使用提供时间点信息的第三方工具。您是否知道代理设置中已清除所有作业历史记录?如果您右键单击代理并转到属性。然后是历史。默认情况下,MSDB 中只有 1000 行数据可用。以前,我已经将所有代理工作数据移动到我自己的 DBA 样式报告数据库中。或者为每个作业添加一个步骤,将上次运行的所有结果数据传输到一个不会被清空的表中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 2017-12-29
    • 2012-06-25
    • 2018-10-16
    相关资源
    最近更新 更多