SQL Server Agent

In SSMS Object Explorer connected to your target SQL Server...

SQL Server Agent - Jobs - Right Click - New 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...

Bibliography