Sacar respaldos de las bases de datos es una de las tareas más importante de todo DBA, y esta tarea se puede poner tediosa cuando lidiamos con ambientes que tienen numerosas bases de datos en una o mas instancias SQL Server.
También es posible que nuestros jobs o planes de mantenimiento de backup no estén actualizados con las nuevas bases de datos y se nos dificulte agregar o quitar una a una.
Aquí les comparto un script dinámico que los ayudará a sacar backups full de sus bases de datos de usuario usando un cursos y las almacena en la carpeta ‘D:\Bkpsql\’:
DECLARE @name NVARCHAR(256) — database name
DECLARE @path NVARCHAR(512) — path for backup files
DECLARE @fileName NVARCHAR(512) — filename for backup
DECLARE @fileDate NVARCHAR(40) — used for file name
— specify database backup directory
SET @path = ‘D:\Bkpsql\’
— specify filename format
SELECT @fileDate = CONVERT(NVARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR READ_ONLY FOR
SELECT name
FROM master.sys.databases
WHERE name NOT IN (‘master’,’model’,’msdb’,’tempdb’) — exclude these databases
AND state = 0 — database is online
AND is_in_standby = 0 — database is not read only for log shipping
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 WITH STATS=10, COMPRESSION
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor