Respaldar (BackUp) de todas las bases de datos Microsoft SQL Server

Respaldar (BackUp) de todas las bases de datos Microsoft SQL Server

Muchas veces, a medida que vamos agregando bases de datos a un servidor SQL, se hace cada vez más complicado hacer respaldo (BackUp) de todas las bases de datos. A continuación les presento un Script SQL que permite guardar un respaldo de todas las bases de datos alojadas en el servidor sin incluir las del sistema. El código de dicho script es el siguiente:

--*****************************************************************************************************
-- Declaración de las variables

DECLARE @NombreDB VARCHAR(50) -- Nombre de la Base de Datos  
DECLARE @Ruta_Base VARCHAR(256) -- Ruta Base de la carpeta de respaldo 
DECLARE @Subdirectorio VARCHAR(256) -- carpeta que contiene el respaldo del día con fecha 
DECLARE @NombreArchivo VARCHAR(256) -- Nombre del archivo a respaldar  
DECLARE @FechaArchivo VARCHAR(20) -- Fecha del archivo
DECLARE @Comando nvarchar(500) -- Almacena el comando
DECLARE @Nombre_dB nvarchar(100) -- Nombre de la base de datos


-- Establece la ruta de la carpeta base donde se van a guardar los respaldos en carpetas clasificados por fecha:
SET @Ruta_Base = 'D:\RESP_DATA\'

-- Crea un Subdirectorio con la fecha y hora actual con formato dd-MM-yyyy_hh_mm:
SET @Subdirectorio = @Ruta_Base + CONVERT(VARCHAR(20),GETDATE(),105) + '_' + Convert(varchar(2), DatePart(hh, GetDate())) + '_' + Convert(varchar(2), DatePart(mi, GetDate())) + '\ '

SET @Comando = 'MD "' + @Subdirectorio + '"'

EXEC master..xp_cmdshell @Comando

-- Busca el nombre de todas las bases de datos, excepto las de sistema:
DECLARE db_cursor CURSOR FOR SELECT Name FROM master.dbo.sysdatabases WHERE Category != 16 AND Name NOT IN ('master','model','msdb','tempdb') ORDER BY Name

-- Crea un cursor para recorrer las bases de datos:
OPEN db_cursor

FETCH NEXT FROM db_cursor INTO @Nombre_dB

WHILE @@FETCH_STATUS = 0

BEGIN

    BEGIN TRY
-- Hace el respaldo de todas las bases de datos menos las del sistema:

        SET @NombreArchivo = @Subdirectorio + @Nombre_dB + '.bak'

        BACKUP DATABASE @Nombre_dB TO DISK = @NombreArchivo

    END TRY

    BEGIN CATCH

    END CATCH;

    FETCH NEXT FROM db_cursor INTO @Nombre_dB

END

-- Se elimina el cursor:

CLOSE db_cursor

DEALLOCATE db_cursor

--******************************************************************************************************

Para poder usar xp_cmdshell se debe activar primero la opción en el servidor la cual viene desactivada por defecto, con el siguiente script:

--******************************************************************************************************
-- Para permitir que las opciones avanzadas sean cambiadas.  
EXEC sp_configure 'show advanced options', 1;  
GO  
-- Para configurar los valores actuales.  
RECONFIGURE;  
GO  
-- Para activar la característica.  
EXEC sp_configure 'xp_cmdshell', 1;  
GO  
-- Para actualizar con la nueva configuración.  
RECONFIGURE;  
GO   
--*******************************************************************************************************

A continuación les dejo el enlace donde pueden descargar todos los scripts necesarios para hacer el respaldo de todas las bases de datos incluyendo un trabajo automático de ejemplo:


Descargar archivos

2 comentarios:

  1. El mejor hosting gratuito https://www.zz.com.ve/ ofrece: alojamiento gratuito, hasta 100GB de espacio en disco, dominios gratuitos, cuentas de correo, base de datos MySQL y SQLite, banda ancha ilimitada.

    ResponderBorrar