SQL Server Agent
Create Job
In SSMS Object Explorer connected to your target SQL Server...
SQL Server Agent - Jobs - Right Click - New Job...
Duplicate Job
In SSMS Object Explorer connected to your target SQL Server...
SQL Server Agent - Jobs - Right Click - Script Job as - CREATE To - File...
Make any necessary changes to the generated script (e.g. change database names etc), then run it in the target instance
List Jobs
SELECT name,
enabled,
description
FROM msdb.dbo.sysjobs
List Jobs with a Schedule
SELECT name,
enabled,
description
FROM msdb.dbo.sysjobs
INNER JOIN msdb.dbo.sysjobschedules ON sysjobs.job_id = sysjobschedules.job_id
ORDER BY enabled DESC
To include schedule name...
SELECT sysjobs.job_id,
sysjobs.name job_name,
sysjobs.enabled job_enabled,
sysschedules.name schedule_name,
sysschedules.schedule_id,
sysschedules.schedule_uid,
sysschedules.enabled schedule_enabled
FROM msdb.dbo.sysjobs
INNER JOIN msdb.dbo.sysjobschedules ON sysjobs.job_id = sysjobschedules.job_id
INNER JOIN msdb.dbo.sysschedules ON sysjobschedules.schedule_id = sysschedules.schedule_id
ORDER BY sysjobs.enabled desc
To include Frequency and start time...
SELECT sysjobs.name job_name,
sysjobs.enabled job_enabled,
sysschedules.name schedule_name,
sysschedules.enabled schedule_enabled,
"Freq" = CASE sysschedules.freq_type
WHEN '1' THEN 'Once'
WHEN '4' THEN 'Daily'
WHEN '8' THEN 'Weekly'
WHEN '16' THEN 'Monthly'
WHEN '32' THEN 'Monthly (relative to freq_interval)'
WHEN '64' THEN 'At Agent Start'
WHEN '128' THEN 'When Idle'
ELSE 'Unexpected'
END,
sysschedules.freq_interval,
sysschedules.freq_subday_type,
sysschedules.freq_subday_interval,
sysschedules.freq_recurrence_factor,
sysschedules.active_start_time
FROM msdb.dbo.sysjobs
INNER JOIN msdb.dbo.sysjobschedules ON sysjobs.job_id = sysjobschedules.job_id
INNER JOIN msdb.dbo.sysschedules ON sysjobschedules.schedule_id = sysschedules.schedule_id
ORDER BY sysjobs.enabled desc
List Jobs without a Schedule
SELECT name,
enabled,
description
FROM msdb.dbo.sysjobs
WHERE job_id IN ( SELECT job_id
FROM msdb.dbo.sysjobs
EXCEPT
SELECT job_id
FROM msdb.dbo.sysjobschedules )
List Schedules
SELECT name,
enabled,
freq_type,
freq_interval,
freq_subday_type,
freq_subday_interval,
freq_recurrence_factor
FROM msdb.dbo.sysschedules
Troubleshooting
If a SQL Agent job has not run...
Check the database/server was up at the time the job was scheduled to run.
Check that the following Services are running: Task Scheduler, SQL Server Agent, Windows Event Log.
Check that the job is Enabled.
Check that the job schedule is Enabled.
Check the logs.