See my job script below (I'm about to run it every two hours).
USE [tax]
GO
DECLARE @jobId BINARY(16)
EXEC msdb.dbo.sp_add_job @job_name=N'backup_tax',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=2,
@notify_level_page=2,
@delete_level=0,
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
select @jobId
GO
EXEC msdb.dbo.sp_add_jobserver @job_name=N'backup_tax', @server_name = N'marchelloG' ---CHANGE IT
GO
USE [tax]
GO
EXEC msdb.dbo.sp_add_jobstep @job_name=N'backup_tax', @step_name=N'sp',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_fail_action=2,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'Exec BackupDatabase @fullPath = ''/mnt/hdd/tmp/backup_tax.bak''',
@database_name=N'tax',
@flags=0
GO
USE [tax]
GO
EXEC msdb.dbo.sp_update_job @job_name=N'backup_tax',
@enabled=1,
@start_step_id=1,
@notify_level_eventlog=0,
@notify_level_email=2,
@notify_level_page=2,
@delete_level=0,
@description=N'',
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'sa',
@notify_email_operator_name=N'',
@notify_page_operator_name=N''
Go
USE [tax]
Go
DECLARE @schedule_id int
EXEC msdb.dbo.sp_add_jobschedule @job_name=N'backup_tax', @name=N'every 2 hours',
@enabled=1,
@freq_type=8,
@freq_interval=1,
@freq_subday_type=8,
@freq_subday_interval=2,
@freq_relative_interval=0,
@freq_recurrence_factor=1,
@active_start_date=20190410,
@active_end_date=99991231,
@active_start_time=0,
@active_end_time=235959, @schedule_id = @schedule_id OUTPUT
Select @schedule_id
Go
I ran it manually and it works fine
Exec msdb.dbo.sp_start_job 'backup_tax';
Go
But when I check next scheduled run date, it says 2019-04-14 [corrected] (4 days to wait), but why?
SELECT
sj.name AS jobName
, ss.name AS scheduleName
, sja.next_scheduled_run_date
FROM msdb.dbo.sysjobs sj
INNER JOIN msdb.dbo.sysjobactivity sja ON sja.job_id = sj.job_id
INNER JOIN msdb.dbo.sysjobschedules sjs ON sjs.job_id = sja.job_id
INNER JOIN msdb.dbo.sysschedules ss ON ss.schedule_id = sjs.schedule_id
WHERE (sj.name LIKE 'backup%')
Please advise.