Technical Article

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

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating