Você está na página 1de 2

--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 */

Você também pode gostar