SQL Server 维护计划历史记录检查成功或失败

Posted

技术标签:

【中文标题】SQL Server 维护计划历史记录检查成功或失败【英文标题】:SQL Server Maintenance plan history check for success or failure 【发布时间】:2015-11-22 18:18:15 【问题描述】:

当用户登录连接到 Microsoft SQL Server 数据库的我的应用程序时,我想添加一个警报,检查他们的夜间维护计划是否失败或没有运行。

使用 SQL,我如何检查给定维护计划的上次运行时间以及它是成功还是失败?

我可以在以下位置查看维护计划:

SELECT * 
FROM msdb.dbo.sysmaintplan_plans

但是我不确定要加入哪些包含历史记录的表。

【问题讨论】:

msdb..sysdbmaintplan_history 那个表“msdb..sysdbmaintplan_history”是空的。然而,当我使用 SQL 管理工作室查看维护计划的历史时,它清楚地显示了维护计划成功和失败的悠久历史。 查看历史记录时运行分析器跟踪,您将获得查询 【参考方案1】:

根据 Nathans 的建议,我运行了 SQL 分析器并将这些查询编译成一个查询以满足我的需要。

此查询将提供包括当前数据库在内的任何维护计划的最新运行状态:

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)

这最适用于向导生成的维护计划。 Ad-hoc 计划并不总是包含过滤命令。 但表格链接仍然有效。

【讨论】:

以上是关于SQL Server 维护计划历史记录检查成功或失败的主要内容,如果未能解决你的问题,请参考以下文章

sql server使用维护计划定时备份完整数据库差异数据库

sql server 2008自动备份出现 出现 执行维护计划. MaintenancePlan (错误)密码和登录名不匹被

SQL2012 之 创建备份计划

SQL Server代理(11/12):维护计划作业

sql server 如何执行一项计划任务

sql server 2005怎么自动定时删除3天前的备份文件?