Mostrando entradas con la etiqueta Command. Mostrar todas las entradas
Mostrando entradas con la etiqueta Command. Mostrar todas las entradas

jueves, 22 de marzo de 2012

Backup

En cierta ocasión tuve que desarrollar un sistema sencillo para hacer copias de seguridad de todas las bases de datos no-de sistema para cierta instancia.

Éste es el script que desarrollé, de nombre backup.sql:

DECLARE @name VARCHAR(50) -- database name 
DECLARE @path VARCHAR(256) -- path for backup files 
DECLARE @fileName VARCHAR(256) -- filename for backup 
DECLARE @fileDate VARCHAR(20) -- used for file name

SET @path = 'C:\COPIAS_SEGURIDAD\' 
SELECT @fileDate = convert(varchar, getdate(), 102)+'_'+ replace(convert(varchar, getdate(),14),':','.')
DECLARE db_cursor CURSOR FOR 
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') 

OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @name  

WHILE @@FETCH_STATUS = 0  
BEGIN  
       SET @fileName = @path + @name + '_' + @fileDate + '.BAK' 
       BACKUP DATABASE @name TO DISK = @fileName 

       FETCH NEXT FROM db_cursor INTO @name  
END  

CLOSE db_cursor  
DEALLOCATE db_cursor


Para que pudiera funcionar tanto para instalaciones express como superiores, tenía que ser independiente del SQL Agent, por lo que escribí el siguiente fichero BACKUP.bat

sqlcmd -E -i "backup.sql" -S nombrerequipo\nombreinstancia

el cual sería ejecutado periódicamente por el sistema de Tareas Automatizadas del equipo.