Como resguardar todas las bases de datos de un SQL 2008 y comprimirlas… nativo ;p
Particularmente, lo ejecuto desde el plan de mantenimiento general del SQL pero se podría armar un Job diario o alguna tarea programada de Windows.
Como es muy simple no pierdo más tiempo explicándolo, los dejo con el código en cuestión:
create procedure sp_daf_backup
as
begin
set nocount on
-- nombre de la base
DECLARE @name VARCHAR(5000)
-- carpeta de destino de los back ups
DECLARE @path VARCHAR(2560)
-- nombre del archivo de back up
DECLARE @fileName VARCHAR(2560)
-- fecha para el nombre del archivo
DECLARE @fileDate VARCHAR(20)
-- para el calculo de cuanto tarda
DECLARE @start datetime, @stop datetime
SET @path = 'P:\SQLFiles\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\ '
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
order by name
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
-- Si gustan agregar al nombre del
-- archivo la fecha, usar este set
--SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
SET @fileName = @path + @name + '.BAK'
set @start = GETDATE()
print 'Backuping ' + @name + ' ' +
convert(varchar(50),@start, 120)+ '... '
BACKUP DATABASE @name TO DISK = @fileName
WITH COMPRESSION, INIT, STATS = 10
set @stop = GETDATE()
print convert(varchar(500), DATEDIFF(s, @start, @stop)) + ' Seconds used'
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
print 'Finalizado'
end