Mar*_*lli 0 sql-server powershell sql-server-2012 jobs maintenance-plans
我有一个脚本来获取当前正在运行的作业:
-- get the running jobs
--marcelo miorelli
-- 10-dec-2013
SELECT sj.name
,DATEDIFF(SECOND,aj.start_execution_date,GetDate()) AS Seconds
FROM msdb..sysjobactivity aj
JOIN msdb..sysjobs sj on sj.job_id = aj.job_id
WHERE aj.stop_execution_date IS NULL -- job hasn't stopped running
AND aj.start_execution_date IS NOT NULL -- job is currently running
--AND sj.name = 'JobName'
and not exists( -- make sure this is the most recent run
select 1
from msdb..sysjobactivity new
where new.job_id = aj.job_id
and new.start_execution_date > aj.start_execution_date )
Run Code Online (Sandbox Code Playgroud)
当我在我的服务器上运行它时,它说当前没有正在运行的作业,但是,当我查看作业活动监视器时,我看到了下图。
此作业的第二步是使用代理运行 powershell 脚本。 你可以在这里看到第二步。
有什么理由将我的工作的第二步显示为正在运行?我该如何解决?
改用脚本来检查当前正在运行的作业的状态。
SELECT job.name,
job.job_id,
job.originating_server,
activity.run_requested_date,
DATEDIFF(MINUTE, activity.run_requested_date, GETDATE()) as Elapsed,
case when activity.last_executed_step_id is null
then 'Step 1 executing'
else 'Step ' + convert(varchar(20), last_executed_step_id + 1)
+ ' executing'
end
FROM msdb.dbo.sysjobs_view job
JOIN msdb.dbo.sysjobactivity activity ON job.job_id = activity.job_id
JOIN msdb.dbo.syssessions sess ON sess.session_id = activity.session_id
JOIN ( SELECT MAX(agent_start_date) AS max_agent_start_date
FROM msdb.dbo.syssessions
) sess_max ON sess.agent_start_date = sess_max.max_agent_start_date
WHERE run_requested_date IS NOT NULL
AND stop_execution_date IS NULL
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11843 次 |
| 最近记录: |