VAMOS LA
E claro que vc. vai ter que adaptar este script para sua realidade neste caso realizo o backup na unidade Z:\Backup\Dia da senama coloque o seu end. local de backup
O Usuário que ira vai realizar o backup <<<<< USUARIO DE BACKUP >>>>>> deve ser cadastrado no sql server com o acesso somente de db_backupoperator.
E o \\IP DA REDE\ UNIDADES DE BACKUP REMOTA \ entra o endereço remoto aonde sera armazenado o backup.
ACREDITE O SCRIPT ESTA BEM SIMPLES VAI TER GENTE RECLAMANDO DA SERIE DE IF(S) ETC.. E TAL MAS LEMBRO QUE ESTE SCRIPT É PARA AJUDAR AOS INICIANTES.
OU SEJA VAI RECLAMAR COM A VOVÓ.
use master
DECLARE @nome_banco varchar(50)
DECLARE @dia_semana varchar(50)
SET @dia_semana = 'Terca'
DECLARE @unidade varchar(50)
SET @unidade = 'CaboFrio'
DECLARE @drive_local varchar(50)
SET @drive_local = 'Z:\Backup\'+@dia_semana
DECLARE @drive_rede varchar(70)
SET @drive_rede = '\\IP DA REDE\ UNIDADES DE BACKUP REMOTA \'+@unidade+'\'+@dia_semana+'\'
DECLARE lista CURSOR SCROLL FOR select name from master..sysdatabases order by name
OPEN lista
if @dia_semana = 'Segunda'
BEGIN
PRINT 'del Z:\Backup\Segunda\*.* /q'
PRINT 'del Z:\Backup\Terca\*.* /q'
PRINT 'del Z:\Backup\Quarta\*.* /q'
PRINT 'del Z:\Backup\Quinta\*.* /q'
PRINT 'del Z:\Backup\Sexta\*.* /q'
PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Terca'
BEGIN
PRINT 'del Z:\Backup\Terca\*.* /q'
PRINT 'del Z:\Backup\Quarta\*.* /q'
PRINT 'del Z:\Backup\Quinta\*.* /q'
PRINT 'del Z:\Backup\Sexta\*.* /q'
PRINT 'del Z:\Backup\Sabado\*.* /q'
PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Quarta'
BEGIN
PRINT 'del Z:\Backup\Quarta\*.* /q'
PRINT 'del Z:\Backup\Quinta\*.* /q'
PRINT 'del Z:\Backup\Sexta\*.* /q'
PRINT 'del Z:\Backup\Sabado\*.* /q'
PRINT 'del Z:\Backup\Domingo\*.* /q'
PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Quinta'
BEGIN
PRINT 'del Z:\Backup\Quinta\*.* /q'
PRINT 'del Z:\Backup\Sexta\*.* /q'
PRINT 'del Z:\Backup\Sabado\*.* /q'
PRINT 'del Z:\Backup\Domingo\*.* /q'
PRINT 'del Z:\Backup\Segunda\*.* /q'
PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Sexta'
BEGIN
PRINT 'del Z:\Backup\Sexta\*.* /q'
PRINT 'del Z:\Backup\Sabado\*.* /q'
PRINT 'del Z:\Backup\Domingo\*.* /q'
PRINT 'del Z:\Backup\Segunda\*.* /q'
PRINT 'del Z:\Backup\Terca\*.* /q'
PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Sabado'
BEGIN
PRINT 'del Z:\Backup\Sabado\*.* /q'
PRINT 'del Z:\Backup\Domingo\*.* /q'
PRINT 'del Z:\Backup\Segunda\*.* /q'
PRINT 'del Z:\Backup\Terca\*.* /q'
PRINT 'del Z:\Backup\Quarta\*.* /q'
PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Domingo'
BEGIN
PRINT 'del Z:\Backup\Domingo\*.* /q'
PRINT 'del Z:\Backup\Segunda\*.* /q'
PRINT 'del Z:\Backup\Terca\*.* /q'
PRINT 'del Z:\Backup\Quarta\*.* /q'
PRINT 'del Z:\Backup\Quinta\*.* /q'
PRINT 'del '+@drive_rede+'*.* /q'
END
-- Primeiro registro
FETCH FIRST FROM lista INTO @nome_banco
WHILE @@FETCH_STATUS = 0
BEGIN
-- codigo para criar um script tipo .bat para gera o backup de todos os bancos
;
PRINT '@echo.'
PRINT '@echo.'
PRINT '@echo *********************************************** '
PRINT '@echo * '+ @nome_banco + ' * '
PRINT '@echo *********************************************** '
PRINT 'OSQL -U <<<<< USUARIO DE BACKUP >>>>>> -P <<<<< SENHA USUARIO DE BACKUP >>>>>> -Q "BACKUP DATABASE '+ @nome_banco + ' TO DISK ='+ NCHAR(39)+'Z:\Backup\'+@dia_semana+'\'+@nome_banco+'.bak'+ NCHAR(39)+' " '
PRINT 'rar a Z:\Backup\'+@dia_semana+'\'+@nome_banco+'.rar Z:\Backup\'+@dia_semana+'\'+ @nome_banco+'.bak '
PRINT 'del Z:\Backup\'+@dia_semana+'\'+@nome_banco+'.bak '
PRINT 'ROBOCOPY *.rar Z:\Backup\'+@dia_semana+'\ '+@drive_rede+' /MIR /MT:5 /Z /R:5 /W:30'
PRINT '@echo.'
-- Próximo registro
FETCH NEXT FROM lista INTO @nome_banco
END
CLOSE lista
DEALLOCATE lista
================================================================================================
Só dei uma arrumadinha.
DECLARE @nome_banco varchar(50)
DECLARE @drive_local varchar(50)
SET @drive_local = 'Z:\Backup\'
DECLARE @drive_rede varchar(70)
SET @drive_rede = '\\IP\local\'
DECLARE @dia_semana varchar(50)
SET @dia_semana = 'Terca'
-- SET @drive_rede = @drive_rede+@dia_semana
--SET @drive_local = @drive_local+@dia_semana
DECLARE lista CURSOR SCROLL FOR select name from master..sysdatabases order by name
OPEN lista
if @dia_semana = 'Segunda'
BEGIN
PRINT 'del Z:\Backup\Segunda\*.* /q'
PRINT 'del Z:\Backup\Terca\*.* /q'
PRINT 'del Z:\Backup\Quarta\*.* /q'
PRINT 'del Z:\Backup\Quinta\*.* /q'
PRINT 'del Z:\Backup\Sexta\*.* /q'
-- PRINT 'del '+@drive_rede+@dia_semana+'\ *.* /q'
END
if @dia_semana = 'Terca'
BEGIN
PRINT 'del Z:\Backup\Terca\*.* /q'
PRINT 'del Z:\Backup\Quarta\*.* /q'
PRINT 'del Z:\Backup\Quinta\*.* /q'
PRINT 'del Z:\Backup\Sexta\*.* /q'
PRINT 'del Z:\Backup\Sabado\*.* /q'
-- PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Quarta'
BEGIN
PRINT 'del Z:\Backup\Quarta\*.* /q'
PRINT 'del Z:\Backup\Quinta\*.* /q'
PRINT 'del Z:\Backup\Sexta\*.* /q'
PRINT 'del Z:\Backup\Sabado\*.* /q'
PRINT 'del Z:\Backup\Domingo\*.* /q'
-- PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Quinta'
BEGIN
PRINT 'del Z:\Backup\Quinta\*.* /q'
PRINT 'del Z:\Backup\Sexta\*.* /q'
PRINT 'del Z:\Backup\Sabado\*.* /q'
PRINT 'del Z:\Backup\Domingo\*.* /q'
PRINT 'del Z:\Backup\Segunda\*.* /q'
-- PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Sexta'
BEGIN
PRINT 'del Z:\Backup\Sexta\*.* /q'
PRINT 'del Z:\Backup\Sabado\*.* /q'
PRINT 'del Z:\Backup\Domingo\*.* /q'
PRINT 'del Z:\Backup\Segunda\*.* /q'
PRINT 'del Z:\Backup\Terca\*.* /q'
-- PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Sabado'
BEGIN
PRINT 'del Z:\Backup\Sabado\*.* /q'
PRINT 'del Z:\Backup\Domingo\*.* /q'
PRINT 'del Z:\Backup\Segunda\*.* /q'
PRINT 'del Z:\Backup\Terca\*.* /q'
PRINT 'del Z:\Backup\Quarta\*.* /q'
-- PRINT 'del '+@drive_rede+'*.* /q'
END
if @dia_semana = 'Domingo'
BEGIN
PRINT 'del Z:\Backup\Domingo\*.* /q'
PRINT 'del Z:\Backup\Segunda\*.* /q'
PRINT 'del Z:\Backup\Terca\*.* /q'
PRINT 'del Z:\Backup\Quarta\*.* /q'
PRINT 'del Z:\Backup\Quinta\*.* /q'
-- PRINT 'del '+@drive_rede+'*.* /q'
END
-- Primeiro registro
FETCH FIRST FROM lista INTO @nome_banco
WHILE @@FETCH_STATUS = 0
BEGIN
if @nome_banco != '<<BANCO >>_OLD' and @nome_banco != 'SIG00_OLD'
begin
PRINT '@echo.'
PRINT '@echo.'
PRINT '@echo *********************************************** '
PRINT '@echo * '+ @nome_banco + ' * '
PRINT '@echo ***********************************************'
PRINT 'OSQL -U db_backup -P backup@2000 -Q "BACKUP DATABASE '+ @nome_banco + ' TO DISK ='+ NCHAR(39)+@drive_local+@dia_semana+'\'+@nome_banco + '.bak' + NCHAR(39) + ' " '
PRINT @drive_local+'rar a '+@drive_local+@dia_semana+'\'+@nome_banco + '.rar '+@drive_local+@dia_semana+'\'+@nome_banco + '.bak '
PRINT 'XCOPY '+@drive_local+@dia_semana+'\'+@nome_banco + '.rar '+@drive_rede+@dia_semana+' /Y'
if @nome_banco != '<<BANCO >>' AND @nome_banco != '<<BANCO >>'
PRINT 'del '+@drive_local+@dia_semana+'\'+@nome_banco + '.bak '
;
end
-- Próximo registro
FETCH NEXT FROM lista INTO @nome_banco
END
CLOSE lista
DEALLOCATE lista