Creating Job Backup
    This Stored Procedure create backup job for all user databases. You can customize SQLAdmin operator.
See Creating Backup Devices
   SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO
USE msdb
GO
/**********************************************************************************
Stored Procedure......: pCreateBackupJobs
Objetivo..............: Criar devices para backup full, differential e log
----------  --------------------  -------------------------------------------------
Data    Programador  Observação
----------  --------------------  -------------------------------------------------
22/07/2002  Paulo Barros  Created
**********************************************************************************/CREATE PROCEDURE pCreateBackupJobs AS
/*********************************************************************************/
-- Cria 4 jobs
EXEC sp_add_job @job_name = 'Full Backup', 
    @enabled = 1,
    @description = 'Backup Full all user Databases',
    @owner_login_name = 'sa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_email_operator_name = 'SQLAdmin'
EXEC sp_add_job @job_name = 'Backup Diferencial', 
    @enabled = 1,
    @description = 'Backup Differential all user Databases',
    @owner_login_name = 'sa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_email_operator_name = 'SQLAdmin'
EXEC sp_add_job @job_name = 'Backup Log - Initialization', 
    @enabled = 1,
    @description = 'Backup Log all user Databases',
    @owner_login_name = 'sa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_email_operator_name = 'SQLAdmin'
EXEC sp_add_job @job_name = 'Backup Log', 
    @enabled = 1,
    @description = 'Backup de Log all user Databases',
    @owner_login_name = 'sa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_email_operator_name = 'SQLAdmin'
Declare @cDBName varchar(50), @nRecs tinyint, @nCount tinyint, @nAction char(1)
Declare curDB CURSOR FOR
select name from master..sysdatabases
where name not in ('tempdb','master','model','msdb')
Set @nCount = 0
Set @nAction = '3'    -- goto next step
-- Nº de registros
select @nRecs = Count(name) from master..sysdatabases
where name not in ('tempdb','master','model','msdb')
OPEN curDB 
FETCH NEXT FROM curDB 
INTO @cDBName
-- Crias os passos de cada Job
WHILE @@FETCH_STATUS = 0
BEGIN
Declare @cComando varchar(1000)
Set @nCount = @nCount + 1
-- Se for o último passo do job
if @nCount = @nRecs
   Set @nAction = '1'   -- Sai com sucesso
-- Cria um step no job de Backup Full para cada DB
set @cComando = "sp_add_jobstep @job_name  = 'Backup Completo',
           @step_name = " + @cDBName + ",
             @subsystem = 'TSQL', 
             @command   = 'BACKUP DATABASE " + @cDBName + " TO " + 
       @cDBName + "_Full WITH INIT',
         @database_name = " + @cDBName + ",
 @on_success_action = " + @nAction + ", 
         @output_file_name = 'D:\MSSQL\JOBS\" + @cDBName + "_BKPFULL.TXT'"
EXEC (@cComando)
-- Cria um step no job de Backup Diferencial para cada DB
set @cComando = "sp_add_jobstep @job_name  = 'Backup Diferencial',
           @step_name = " + @cDBName + ",
             @subsystem = 'TSQL', 
             @command   = 'BACKUP DATABASE " + @cDBName + " TO " + 
       @cDBName + "_Diff WITH DIFFERENTIAL, INIT',
         @database_name = " + @cDBName + ",
 @on_success_action = " + @nAction + ", 
         @output_file_name = 'D:\MSSQL\JOBS\" + @cDBName + "_BKPDIFF.TXT'"
EXEC (@cComando)
-- Cria um step no job de Backup de Log - Inicialização para cada DB
set @cComando = "sp_add_jobstep @job_name  = 'Backup de Log - Inicialização',
           @step_name = " + @cDBName + ",
             @subsystem = 'TSQL', 
             @command   = 'BACKUP LOG " + @cDBName + " TO " + 
       @cDBName + "_Log WITH INIT',
         @database_name = " + @cDBName + ",
 @on_success_action = " + @nAction + ", 
         @output_file_name = 'D:\MSSQL\JOBS\" + @cDBName + "_BKPLOGINIT.TXT'"
EXEC (@cComando)
-- Cria um step no job de Backup Full para cada DB
set @cComando = "sp_add_jobstep @job_name  = 'Backup de Log',
           @step_name = " + @cDBName + ",
             @subsystem = 'TSQL', 
             @command   = 'BACKUP LOG " + @cDBName + " TO " + 
       @cDBName + "_Log WITH NOINIT',
         @database_name = " + @cDBName + ",
 @on_success_action = " + @nAction + ", 
         @output_file_name = 'D:\MSSQL\JOBS\" + @cDBName + "_BKPLOG.TXT'"
EXEC (@cComando)
/*
    -- Parâmetros adicionais do sp_add_jobstep
    [,[@additional_parameters =] 'parameters']
    [,[@cmdexec_success_code =] code]
    [,[@on_success_action =] success_action]
    [,[@on_success_step_id =] success_step_id]
    [,[@on_fail_action =] fail_action]
    [,[@on_fail_step_id =] fail_step_id] 
    [,[@server =] 'server']
    [,[@database_name =] 'database'] 
    [,[@database_user_name =] 'user']
    [,[@retry_attempts =] retry_attempts] 
    [,[@retry_interval =] retry_interval]
    [,[@os_run_priority =] run_priority] 
    [,[@output_file_name =] 'file_name']
    [,[@flags =] flags]
*/
    FETCH NEXT FROM curDB 
    INTO @cDBName
END
DEALLOCATE curDB
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO