SQL 服务器维护计划历史检查成功或失败
SQL Server Maintenance plan history check for success or failure
当用户登录连接到 Microsoft SQL 服务器数据库的我的应用程序时,我想添加一个警报来检查他们的夜间维护计划是否失败或没有 运行。
使用 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)
这最适合向导生成的维护计划。
临时计划并不总是包含用于过滤的命令。
但是 table 链接仍然有效。
当用户登录连接到 Microsoft SQL 服务器数据库的我的应用程序时,我想添加一个警报来检查他们的夜间维护计划是否失败或没有 运行。
使用 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)
这最适合向导生成的维护计划。 临时计划并不总是包含用于过滤的命令。 但是 table 链接仍然有效。