--GERAR BACKUP DE 1 EM 1 HORA, MANTENDO O LTIMO BACKUP
--APAGANDO O BACKUP DE 1 HORA ANTERIOR.
--A funo abaixo retorna o ultimo dia do mes anterior(p.ex: 01/01/2013 --> 31/12/20 12) ----convert(varchar(10),dateadd(mm, datediff(mm,0,getdate()), -1),103) --A funo abaixo retorna o dia anterior(p.ex: 21/02/2013 --> 20/02/2013) ----convert(varchar(10),dateadd(dd, datediff(dd,0,getdate()), -1),103) declare @tmpname varchar(250) declare @path varchar(255) declare @hora varchar(50) declare @data_atual varchar(50) declare @data_anterior varchar(50) declare @dia varchar(50) set @data_atual = convert(varchar(50),getdate(), 103) set @hora = cast(datepart (hour, getdate()) as int) set @dia = cast(datepart (day, getdate()) as int) --recebe o dia atual. if @hora = 00 begin set @hora = cast(@hora as varchar) set @hora = '23' ---apaga o backup de 1 hora anterior if @dia = 01 begin ---dia 1 de cada ms--- set @data_anterior = convert(varchar(10),dateadd(mm, datediff(mm,0,getdate( )), -1),103) end if @dia >= 02 begin ---dia 2 em diante--- set @data_anterior = convert(varchar(10),dateadd(dd, datediff(dd,0,getdate( )), -1),103) end
set @tmpname = substring(@data_anterior,1,2) + substring(@data_anterior,4,2) + substring(@data_anterior,7,4) + '_' + @hora + '00' set @hora = '' end --hora = 00 if @hora >= 01 and @hora <= 09 begin set @hora = @hora - 1 ---apaga o backup da hora anterior set @hora = '0'+ cast(@hora as varchar) set @tmpname = substring(@data_atual,1,2) + substring(@data_atual,4,2) + substring(@data_atual,7,4) + '_' + @hora + '00' set @hora = '' end if @hora >= 10 and @hora <= 23 begin set @hora = @hora - 3 if @hora < 10 begin set @hora = '0'+ cast(@hora as varchar) end set @tmpname = substring(@data_atual,1,2) + substring(@data_atual,4,2) + substring(@data_atual,7,4) + '_' + @hora + '00' set @hora = '' end --select @tmpname set @path = 'C:\BACKUPS_HEMOVIDA\Backup_Hemovida_'+ @tmpname + '.bak' declare @pobj int exec sp_oacreate "scripting.filesystemobject", @pobj out exec sp_oamethod @pobj, "deletefile", null, @path --cdigo para gerar o backup com a data e hora no nome-- use hemovida go declare @data_atual varchar(50), @tmpname varchar(250), @base varchar(20), @path varchar(255) set @data_atual = convert(varchar(50),getdate(), 20) --data hora invertida ex: 2013-02-22 09:30-- set @base = 'Hemovida' set @tmpname = substring(@data_atual,9,2) + substring(@data_atual,6,2) + substring(@data_atual,1,4) + '_' + substring(@data_atual,12,2) + '00' set @path = 'C:\BACKUPS_HEMOVIDA\'+ 'Backup_' + @base +'_' + @tmpname + '.bak' backup database @base to disk = @path with init /* backup full */