Como realizar Backup todas las bases de datos de un server SQL 2008 con compresion

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