SQL プロファイラーを使用して、いくつかのクエリを収集し、現在のデータベースを含むメンテナンス プランのログ履歴を表示する単一の SQL をまとめました。各ステップと成功したかどうかを示します。
SELECT
ld.server_name,
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],
ld.start_time AS [StepStart],
ld.end_time AS [StepEnd],
ld.succeeded AS [StepSucceeded],
ld.line1,
ld.line2,
ld.line3,
ld.line4,
ld.line5,
ld.command
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
INNER JOIN msdb.dbo.sysmaintplan_logdetail ld ON mpl.task_detail_id = ld.task_detail_id
AND ld.command LIKE ('%['+db_name()+']%')
ORDER BY
mpl.start_time DESC
これは、ウィザードによって生成されたメンテナンス プランで最適に機能します。アドホック プランには、フィルタリング用のコマンド列が常に含まれているわけではありません。ただし、テーブルのリンクは引き続き機能します。