-- Schedule Full Database Backup Job
USE msdb;
GO
EXEC dbo.sp_add_job
@job_name = 'FullBackupJob',
@enabled = 1;
EXEC dbo.sp_add_jobstep
@job_name = 'FullBackupJob',
@step_name = 'FullBackupStep',
@subsystem = 'TSQL',
@command =
N'
BACKUP DATABASE YourDatabase
TO DISK = ''C:\YourBackupPath\FullBackup.bak''
WITH INIT, FORMAT, NAME = ''FullBackup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
',
@on_success_action = 3;
EXEC dbo.sp_add_schedule
@job_name = 'FullBackupJob',
@name = 'DailyFullBackup',
@freq_type = 4, -- Daily
@freq_interval = 1, -- Every 1 day
@active_start_time = 100000; -- Start time (in HHMMSS format)
EXEC dbo.sp_attach_schedule
@job_name = 'FullBackupJob',
@schedule_name = 'DailyFullBackup';
-- Schedule Differential Database Backup Job
EXEC dbo.sp_add_job
@job_name = 'DifferentialBackupJob',
@enabled = 1;
EXEC dbo.sp_add_jobstep
@job_name = 'DifferentialBackupJob',
@step_name = 'DifferentialBackupStep',
@subsystem = 'TSQL',
@command =
N'
BACKUP DATABASE YourDatabase
TO DISK = ''C:\YourBackupPath\DifferentialBackup.bak''
WITH DIFFERENTIAL, INIT, FORMAT, NAME = ''DifferentialBackup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
',
@on_success_action = 3;
EXEC dbo.sp_add_schedule
@job_name = 'DifferentialBackupJob',
@name = 'DailyDifferentialBackup',
@freq_type = 4, -- Daily
@freq_interval = 1, -- Every 1 day
@active_start_time = 101500; -- Start time (in HHMMSS format)
EXEC dbo.sp_attach_schedule
@job_name = 'DifferentialBackupJob',
@schedule_name = 'DailyDifferentialBackup';
-- Schedule Transaction Log Backup Job
EXEC dbo.sp_add_job
@job_name = 'LogBackupJob',
@enabled = 1;
EXEC dbo.sp_add_jobstep
@job_name = 'LogBackupJob',
@step_name = 'LogBackupStep',
@subsystem = 'TSQL',
@command =
N'
BACKUP LOG YourDatabase
TO DISK = ''C:\YourBackupPath\LogBackup.trn''
WITH INIT, FORMAT, NAME = ''LogBackup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
',
@on_success_action = 3;
EXEC dbo.sp_add_schedule
@job_name = 'LogBackupJob',
@name = 'HourlyLogBackup',
@freq_type = 4, -- Hourly
@freq_interval = 1, -- Every 1 hour
@active_start_time = 100000; -- Start time (in HHMMSS format)
EXEC dbo.sp_attach_schedule
@job_name = 'LogBackupJob',
@schedule_name = 'HourlyLogBackup';
-- Schedule Database Restore Job
EXEC dbo.sp_add_job
@job_name = 'DatabaseRestoreJob',
@enabled = 1;
EXEC dbo.sp_add_jobstep
@job_name = 'DatabaseRestoreJob',
@step_name = 'DatabaseRestoreStep',
@subsystem = 'TSQL',
@command =
N'
USE master;
RESTORE DATABASE YourDatabase
FROM DISK = ''C:\YourBackupPath\FullBackup.bak''
WITH REPLACE, RECOVERY;
RESTORE DATABASE YourDatabase
FROM DISK = ''C:\YourBackupPath\DifferentialBackup.bak''
WITH NORECOVERY;
RESTORE LOG YourDatabase
FROM DISK = ''C:\YourBackupPath\LogBackup.trn''
WITH RECOVERY;
',
@on_success_action = 3;
-- Assign the restore job to run after the backup jobs
EXEC dbo.sp_update_job
@job_name = 'DatabaseRestoreJob',
@notify_level_eventlog = 0,
@notify_level_email = 0,
@notify_level_netsend = 0,
@notify_level_page = 0,
@notify_level_operator = 0,
@notify_email_operator_name = NULL,
@notify_netsend_operator_name = NULL,
@notify_page_operator_name = NULL;
EXEC dbo.sp_add_jobserver
@job_name = 'DatabaseRestoreJob',
@server_name = '(local)'; -- Specify your SQL Server instance
-- Start the full backup job
EXEC dbo.sp_start_job 'FullBackupJob';