Technical Article

backup, differental and transactions

,

Script for backup of all database taking into account the recovery mode

---Objetivo:Backup all databases for an instance (complete, Differential or log of transactions)
---Fecha: 25/03/2014
---Autor: Andrés Noé Michaca Trujillo
-- El nombre del archivo tendrá este Formato databse_day_month_year_hours_minutes_seconds.BAK
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_BackupDatabaseFullDiferenciallLog] 
 @backupType CHAR(1)      
 AS 
BEGIN
     DECLARE @name     VARCHAR(50)      -- Nombre de la Base de Datos  
     DECLARE @path     VARCHAR(256)     -- Ruta para las copias de seguridad
     DECLARE @fileName VARCHAR(256)     -- Nombre del Fichero
     DECLARE @fileDate VARCHAR(20)      -- Usado para el nombre del fichero
 DECLARE @sql      NVARCHAR(1000)   -- Comando SQL
 declare @MODE     VARCHAR(30)      -- mode de recueracion de la base de datos
-- Ruta para las copias de seguridad
     SET @path = 'C:\RESPALDOS_PRUEBA\'  
-- Generar nombre del archivo de respaldo
   set @fileDate =  REPLACE(REPLACE(CONVERT(VARCHAR(20),GETDATE(),113),' ','_'),':','_') 
DECLARE db_cursor CURSOR FOR  
        SELECT name,recovery_model_desc
        FROM sys.databases 
        WHERE name NOT IN ('master','model','msdb','tempdb','ReportServerTempDB','ReportServer')  -- excluir estas bases datos
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name,@MODE   
 
WHILE @@FETCH_STATUS = 0   
BEGIN 
   If @backupType='F' 
      SET @sql ='BACKUP DATABASE '     + '['+LTRIM(RTRIM(@name)) +'] TO DISK = N'''+ @path + @name +'_'+ @fileDate+'.BAK''' + 'WITH NOFORMAT,NOINIT, CHECKSUM, SKIP, COMPRESSION'
   if @backupType='D'      
      SET @sql ='BACKUP DATABASE '     + '['+LTRIM(RTRIM(@name)) +'] TO DISK = N'''+ @path + @name +'_'+ @fileDate+'.BAK''' + 'WITH  DIFFERENTIAL, CHECKSUM, SKIP, COMPRESSION'
   if @backupType='L' AND @MODE='FULL' 
      SET @sql ='BACKUP LOG  '         + '['+LTRIM(RTRIM(@name)) +'] TO DISK = N'''+ @path + @name + '_LOG_'+@fileDate+'.TRN''' + 'WITH COMPRESSION'
   EXECUTE sp_executesql @sql
   FETCH NEXT FROM db_cursor INTO @name,@MODE   
END  
end 
CLOSE db_cursor   
DEALLOCATE db_cursor

--TO EXECUTE
exec sp_BackupDatabaseFullDiferencialLog  'F'

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating