我想知道是否有一种方法可以使用 T-SQL 查询或甚至在 SSMS 中获取下一次作业应该在 SQL Server 2008 中运行的时间,而不必查阅所有作业的所有计划。
谢谢
答案1
在 msdb 数据库中运行 sp_help_job。next_run_date 和 next_run_time 列具有您要查找的值。
答案2
因为我喜欢一些 powershell:
$server = new-object microsoft.sqlserver.management.smo.server 'yourinstance';
$agent = $server.jobserver;
$job = $agent.jobs['your job name here'];
$job.nextrundate;
答案3
这将为您提供包含您的作业名称和下次运行日期/时间的单行结果集。
DECLARE @JobName sysname
SET @JobName='Query Tool Daily Routines'
SELECT
JobName,
MAX(NextRunTime) as NextRunTime
FROM (
SELECT
j.name as JobName,
cast(
CONVERT(CHAR(8), next_run_date, 112)
+ ' '
+ STUFF(STUFF(RIGHT('000000'
+ CONVERT(VARCHAR(8), next_run_time), 6), 5, 0, ':'), 3, 0, ':')
as datetime) as NextRunTime
FROM msdb.dbo.sysjobs j
join msdb.dbo.sysjobschedules s on j.job_id = s.job_id
and j.name=@JobName
) t1
group by JobName
当然,您可以摆脱 DECLARE 和 SET,而只需将其包含在内部查询的连接中。
答案4
供浏览过这个旧线程的谷歌用户参考,作业活动监视器返回大量与 sp_help_jobs 相同的信息。