【问题标题】:SQL Server Maintenance plan history check statusSQL Server 维护计划历史检查状态
【发布时间】:2020-07-22 12:21:39
【问题描述】:

如果仍在运行,我需要监控维护计划,我找到了一个旧帖子(感谢 Don SQL Server Maintenance plan history check for success or failure)来查询日志并获取作业结果,但这仅给出完成后的结果:

SELECT
    mp.name AS [MTX Plan Name],
    msp.subplan_name AS [Sub Plan Name],    
    mpl.start_time AS [JobStart],
    mpl.end_time AS [JobEnd],
    mpl.succeeded AS [JobSucceeded]
FROM
    msdb.dbo.sysmaintplan_plans mp
    INNER JOIN msdb.dbo.sysmaintplan_subplans msp ON mp.id = msp.plan_id
    INNER JOIN msdb.dbo.sysmaintplan_log mpl ON msp.subplan_id = mpl.subplan_id
        AND mpl.task_detail_id = -- Get the most recent run for this database
            (SELECT TOP 1 ld.task_detail_id 
            FROM msdb.dbo.sysmaintplan_logdetail ld
            WHERE ld.command LIKE ('%['+db_name()+']%')
            ORDER BY ld.start_time DESC)

【问题讨论】:

  • 在sql-agent作业中,如果查看具体的任务历史,会显示当前未完成的作业,如果有的话。
  • 我知道,但我需要通过监控工具(在我的情况下为 PRTG)自动检查该查询。

标签: sql sql-server prtg


【解决方案1】:

此查询将为您提供与维护计划相关的活动/正在运行的作业。无论存在什么都意味着它现在正在运行

SELECT sj.name
   , sja.*
FROM msdb.dbo.sysjobactivity AS sja
INNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id
WHERE sja.start_execution_date IS NOT NULL
   AND sja.stop_execution_date IS NULL
   AND sja.job_id IN (SELECT job_id FROM msdb.dbo.sysmaintplan_subplans)

如果您在集成到 PRTG 方面需要帮助,请告诉我

【讨论】:

  • 谢谢贾娜!现在,我使用您的查询来检查维护计划是否仍在运行,并使用第一个查询来检查最后一项作业是否成功完成。我需要两个 PRTG 传感器,但这不是问题!再次感谢您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多