当用户登录到连接到Microsoft SQL Server数据库的应用程序时,我想添加一个警报,以检查其夜间维护计划是否失败或没有运行。
使用SQL,如何检查给定的维护计划上次运行的时间,以及该计划成功还是失败?
我可以在以下位置看到维护计划:
SELECT * FROM msdb.dbo.sysmaintplan_plans
但是我不确定包含历史记录的要联接的表。
根据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)
这最适合向导生成的维护计划。临时计划并不总是包含用于过滤的命令。但是表链接仍然有效。