Я хочу, чтобы получить неудачное работу, которая агента SQL Server не удалось запустить или запустить через SQL скрипт ...Как получить неудавшиеся задания от агента sql-сервера через скрипт?
4
A
ответ
11
Я создал представление, чтобы получить неудачную работу в SQL сервере
CREATE VIEW dbo.View_Failed_Jobs
AS
SELECT Job.instance_id
,SysJobs.job_id
,SysJobs.name as 'JOB_NAME'
,SysJobSteps.step_name as 'STEP_NAME'
,Job.run_status
,Job.sql_message_id
,Job.sql_severity
,Job.message
,Job.exec_date
,Job.run_duration
,Job.server
,SysJobSteps.output_file_name
FROM (SELECT Instance.instance_id
,DBSysJobHistory.job_id
,DBSysJobHistory.step_id
,DBSysJobHistory.sql_message_id
,DBSysJobHistory.sql_severity
,DBSysJobHistory.message
,(CASE DBSysJobHistory.run_status
WHEN 0 THEN 'Failed'
WHEN 1 THEN 'Succeeded'
WHEN 2 THEN 'Retry'
WHEN 3 THEN 'Canceled'
WHEN 4 THEN 'In progress'
END) as run_status
,((SUBSTRING(CAST(DBSysJobHistory.run_date AS VARCHAR(8)), 5, 2) + '/'
+ SUBSTRING(CAST(DBSysJobHistory.run_date AS VARCHAR(8)), 7, 2) + '/'
+ SUBSTRING(CAST(DBSysJobHistory.run_date AS VARCHAR(8)), 1, 4) + ' '
+ SUBSTRING((REPLICATE('0',6-LEN(CAST(DBSysJobHistory.run_time AS varchar)))
+ CAST(DBSysJobHistory.run_time AS VARCHAR)), 1, 2) + ':'
+ SUBSTRING((REPLICATE('0',6-LEN(CAST(DBSysJobHistory.run_time AS VARCHAR)))
+ CAST(DBSysJobHistory.run_time AS VARCHAR)), 3, 2) + ':'
+ SUBSTRING((REPLICATE('0',6-LEN(CAST(DBSysJobHistory.run_time as varchar)))
+ CAST(DBSysJobHistory.run_time AS VARCHAR)), 5, 2))) AS 'exec_date'
,DBSysJobHistory.run_duration
,DBSysJobHistory.retries_attempted
,DBSysJobHistory.server
FROM msdb.dbo.sysjobhistory DBSysJobHistory
JOIN (SELECT DBSysJobHistory.job_id
,DBSysJobHistory.step_id
,MAX(DBSysJobHistory.instance_id) as instance_id
FROM msdb.dbo.sysjobhistory DBSysJobHistory
GROUP BY DBSysJobHistory.job_id
,DBSysJobHistory.step_id
) AS Instance ON DBSysJobHistory.instance_id = Instance.instance_id
WHERE DBSysJobHistory.run_status <> 1
) AS Job
JOIN msdb.dbo.sysjobs SysJobs
ON (Job.job_id = SysJobs.job_id)
JOIN msdb.dbo.sysjobsteps SysJobSteps
ON (Job.job_id = SysJobSteps.job_id AND Job.step_id = SysJobSteps.step_id)
GO
- Теперь выполните оператор выбора для запроса неудавшихся работ
Select * from View_Failed_Jobs
7
Вот пример для SQL Server 2008:
SQL Server Agent Job Query Samples
Вы найдете много больше, если вы используете Google для «неудачных заданий SQL Server», но, к сожалению, большинство примеров не говорят, работают ли они для SQL Server 2008, например this one.
EDIT:
Подсказка: при копировании кода из первой ссылки, используйте кнопку "для просмотра исходного кода":
Там есть "скопировать в буфер обмена" кнопку в хорошо, что я пробовал в первую очередь, но он сгенерировал некоторые теги HTML в SQL-коде, который SQL Server жаловался (и не дал мне выполнить запрос).
0
Следует отметить, что в этом сценарии перечислены только те задания, которые не выполнялись в последний раз, когда он выполнялся, и перечисляет только последний сбой. Если впоследствии это удалось, то этот сценарий вообще не показан. Что может быть или не быть тем, что вы хотите. – paulH