我想失败的作业的SQL Server代理无法启动,或通过SQL脚本运行...如何通过脚本从sql server代理获取失败的作业?
4
A
回答
11
我创建了一个视图获取失败的作业在SQL Server
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语句来查询失败的作业
Select * from View_Failed_Jobs
7
这里是SQL Server 2008中的例子:
SQL Server Agent Job Query Samples
你会发现很多更多的如果你谷歌的“SQL服务器失败的工作”,但不幸的是大多数的例子并不说他们是否适用于SQL Server 2008,例如this one。
编辑:
提示:当您从第一个链接复制代码,使用“查看源文件”按钮:
有一个“复制到剪贴板”按钮那么我首先尝试了一下,但是它在SQL Server中抱怨的SQL代码中生成了一些HTML标记(并且不让我执行查询)。
0
相关问题
- 1. SQL Server代理作业失败
- 2. Sql Server代理作业失败
- 3. SQL代理作业失败
- 4. SQL代理作业失败
- 5. 通过脚本远程创建SQL Server代理作业
- 6. 如何使SQL Server代理作业步骤失败故意
- 7. 2005年从SQL代理作业运行脚本时Powershell脚本为空SQL Server
- 8. 无法从sql server代理作业运行sharepoint powershell脚本
- 9. SQL Server代理中的作业错误启动失败
- 10. 发送SQL Server代理程序作业失败的摘要
- 11. SQL 2008的SQL Server代理作业,如何填充的通知
- 12. 如何在SQL作业步骤失败时执行SQL脚本
- 13. 由于MS DTC导致SQL Server代理作业失败
- 14. SQL Server添加作业代理T-SQL脚本问题
- 15. SQL Server代理作业每周失败一次,'用户登录失败... \ $ duplicate-1889'
- 16. 如何调试SQL Server代理作业?
- 17. 如何备份SQL Server代理作业?
- 18. 如何备份SQL Server代理作业?
- 19. SQL Server代理作业
- 20. 从C运行Sql Server代理作业#
- 21. 如何在SQL Server代理作业中记录成功和失败
- 22. 所有SQL代理作业上的脚本丢失
- 23. 如何查找SQL Server代理作业中的作业数量?
- 24. SSIS包含通过SQL Server代理作业的GnuPG加密
- 25. Python脚本计划通过Cron作业失败
- 26. SQL Server代理不报告PowerShell脚本中的未捕获异常失败
- 27. 如何从java代码启动sql server代理作业
- 28. 如何使用C#从SQL Server 2008的作业生成脚本?
- 29. 从SQL Server代理调用的SSIS包的C#脚本组件错误作业
- 30. 通过SQL Server代理作业调用PowerShell脚本 - 启动脚本不会得到输出
应该指出,该脚本只列出了上次执行失败的作业,并且只列出了最后一次失败。如果它随后成功,则该脚本根本不显示它。这可能是也可能不是你想要的。 – paulH