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