Я пытаюсь решить некоторые проблемы, связанные с историей заданий SQL Server за последние несколько дней, но безуспешно. Мне нравится отображать данные истории заданий, как показано в средстве просмотра файлов журнала. Я запускаю запросы и получаю данные, но я не понимаю, как узнать, какой шаг относится к работе, выполняемой в определенное время. Скажем, если у нас есть задание, выполняемое каждый час, и оно состоит из 4 шагов, поэтому при каждом запуске задания оно будет вставлять 5 записей в sysjobhistory для успешного запуска, теперь меня беспокоит, какие шаги принадлежат к какому заданию, выполняющемуся в определенное время. Как я могу показать это в детализированном отчете, если я хочу его создать.
SELECT sysjobhistory.server,
sysjobs.name
AS
job_name,
CASE sysjobhistory.run_status
WHEN 0 THEN 'Failed'
WHEN 1 THEN 'Succeeded'
ELSE '???'
END
AS
run_status,
Isnull(Substring(CONVERT(VARCHAR(8), run_date), 1, 4) + '-' +
Substring(CONVERT(VARCHAR
(8), run_date), 5, 2) + '-' +
Substring(CONVERT(VARCHAR(
8), run_date), 7, 2), '')
AS
[Run DATE],
Isnull(Substring(CONVERT(VARCHAR(7), run_time+1000000), 2, 2) + ':'
+
Substring(CONVERT(VARCHAR(7), run_time+1000000), 4, 2
)
+
':' +
Substring(CONVERT(VARCHAR(7), run_time+1000000), 6, 2), '')
AS
[Run TIME],
Isnull(Substring(CONVERT(VARCHAR(7), run_duration+1000000), 2, 2) +
':' +
Substring(CONVERT(VARCHAR(7), run_duration+1000000),
4,
2)
+ ':' +
Substring(CONVERT(VARCHAR(7), run_duration+1000000), 6, 2),
''
) AS
[Duration],
sysjobhistory.step_id,
sysjobhistory.step_name,
sysjobhistory.MESSAGE
FROM msdb.dbo.sysjobhistory
INNER JOIN msdb.dbo.sysjobs
ON msdb.dbo.sysjobhistory.job_id = msdb.dbo.sysjobs.job_id
ORDER BY instance_id DESC