You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell获取SQL Server所有作业的最新执行结果?

获取所有SQL Server作业的最新执行结果

可以通过调整PowerShell命令或直接查询SQL系统表的方式,获取每个作业的最新执行记录,不受运行时间限制。以下是两种实用方法:

方法一:PowerShell分组筛选

先拉取所有作业的历史记录,再按作业名称分组,每组仅保留最新的一条执行记录:

Get-SqlAgentJobHistory -ServerInstance "PADB1" | 
    Group-Object -Property JobName | 
    ForEach-Object { $_.Group | Sort-Object -Property RunDate, RunTime -Descending | Select-Object -First 1 }

如果只想筛选出最新结果为失败的作业,可在末尾添加过滤条件:

Get-SqlAgentJobHistory -ServerInstance "PADB1" | 
    Group-Object -Property JobName | 
    ForEach-Object { $_.Group | Sort-Object -Property RunDate, RunTime -Descending | Select-Object -First 1 } |
    Where-Object { $_.RunStatus -eq 0 } # RunStatus=0对应失败状态

方法二:直接查询SQL系统表

若追求更高效率,可直接连接SQL Server查询系统表msdb.dbo.sysjobhistory,通过窗口函数快速定位每个作业的最新记录:

SELECT j.name AS JobName,
       h.run_date,
       h.run_time,
       CASE h.run_status 
           WHEN 0 THEN '失败'
           WHEN 1 THEN '成功'
           WHEN 2 THEN '重试'
           WHEN 3 THEN '取消'
           WHEN 4 THEN '正在运行'
       END AS RunStatus,
       h.message
FROM msdb.dbo.sysjobhistory h
JOIN msdb.dbo.sysjobs j ON h.job_id = j.job_id
WHERE h.instance_id IN (
    SELECT MAX(instance_id)
    FROM msdb.dbo.sysjobhistory
    GROUP BY job_id
)
ORDER BY j.name

该查询会返回每个作业的最新执行日期、时间、状态及执行消息,结果清晰直观。

补充:Get-SqlAgentJobHistory的RunStatus属性对应值:0=失败,1=成功,2=重试,3=取消,4=正在运行,可按需调整筛选逻辑。

内容的提问来源于stack exchange,提问作者MartMX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:24:57