← maurobernal.com.ar

Etiqueta: backup

  • Realizar backup con TSQL

    Realizar backup de tus bases con TSQL en MS SQL Server

    Hoy veremos una manera simple de realizar un respaldo de todas nuestras bases de datos mediante un pequeño script.

    Script para Backup

    --------------------------------------------------
    --Variables
    DECLARE @Base_Datos VARCHAR(50) -- Nombre de la Base de Datos  
    DECLARE @Ruta_Archivos VARCHAR(256) -- Ruta para los archivos 
    DECLARE @Nombre_A VARCHAR(256) -- Nombre del Backup  (1era Parte)
    DECLARE @Nombre_B VARCHAR(20) --  Nombre del Backup (2da Parte)
     
    -- 1-Ubicación de los backups
    SET @Ruta_Archivos = 'C:\Temp\'  
     
    -- Nombre del Archivo (2da Parte) _YYYYMMDD
    SELECT @Nombre_B = (SELECT '_'+CONVERT(VARCHAR(20),GETDATE(),112) +'.BAK') 
     
    DECLARE Cursor_Backup CURSOR READ_ONLY FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  -- exclude these databases
     
    OPEN Cursor_Backup   
    FETCH NEXT FROM Cursor_Backup INTO @Base_Datos   
     
    WHILE @@FETCH_STATUS = 0   
    BEGIN   
       SET @Nombre_A = @Ruta_Archivos + @Base_Datos +  @Nombre_B   
       BACKUP DATABASE @Base_Datos TO DISK = @Nombre_A  
     
       FETCH NEXT FROM Cursor_Backup INTO @Base_Datos   
    END   
    
     
    CLOSE Cursor_Backup   
    DEALLOCATE Cursor_Backup

    Resultado de correr el script

    realizar backup con tsqlQue sigue…

    Se puede optimizar el script para agregar nuevas opciones de backups, como así también programar el mismo.

  • Directorio de Backup de MS SQL predeterminado

    Restaurar backup es un proceso, que en algunos casos se debe desarrollar diariamente. Por ello es bueno optimizar los tiempos.

    A continuación un Tips para que al buscar el backup con el Microsoft
    SQL Server Management Studio les abra en un directorio que ustedes elijan.

    En este caso estoy trabajando con SQL Server 2008 R2 x64 Enterprise. Al intentar levantar un backup siempre abre el «examinar» en el mismo lugar:
    «C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup»

     

    Para modificar dicha ruta predeterminada realizamos lo siguiente:

    1. Ingresamos al Editor del Registro de Windows (regedit)
    2. Navegamos dentro del registro por MIPC\HKLM\Software\Microsoft\Microsoft Sql Server\(Motor + Instancia)\MSSQLServer:
    3. Buscamos y modificamos la clave «BackupDirectory» por el directorio que nosotros queramos:

     

    Listo! Ahora la próxima vez que intentemos recuperar un backup, abrirá directamente en dicha carpeta:

  • Verificar Backups por TSQL

    Verificar que se hayan realizado correctamente los backups es tarea fundamental de un DBA.

    Para ello contamos con una serie de tablas provistar por Microsoft SQL Server para almacenar dicha información:

    • msdb.dbo.backupfile
    • msdb.dbo.backupmediafamily
    • msdb.dbo.backupmediaset
    • msdb.dbo.backupset

     

    Los siguientes scripts pueden facilitar dicha tarea.

    Más adelante trabajaremos con más detalle.

     

    Atención:   Si copian y pegan puede que la comilla simple (‘) se convierta a comilla doble («»).

    /*******************************************************************************
    Último Backup de la Base
    ******************************************************************************/
    SELECT    S.Name AS DB, MAX(B.backup_finish_date) Fecha,DATEDIFF(hh,MAX(B.backup_finish_date),GETDATE()) Antiguedad_HS ,
    CASE
      WHEN DATEDIFF(hh , MAX(B.backup_finish_date, GETDATE()) > 24 THENSI’
    WHEN MAX(B.backup_finish_dateIS NULL THEN ‘SI’ ELSE »
    END AS SinBackupUltimas24hs
    FROM sys.sysdatabases S LEFT OUTER JOIN msdb.dbo.backupset B ON B.database_name = S.name
    WHERE B.type NOT LIKE ‘L’ AND S.name NOT LIKE  ‘tempdb’
    GROUP BY S.Name ORDER BY S.Name

    /*******************************************************************************
    Ultimo Backup del Log
    ******************************************************************************/
    SELECT S.Name AS DB,MAX(B.backup_finish_date) Fecha ,
    CASE WHEN DATEDIFF(hh , MAX(B.backup_finish_date, GETDATE()) > 4 THEN ‘SI’
    WHEN MAX(B.backup_finish_dateIS NULL THEN ‘SI’ ELSE »
    END AS SinBackupUltimas24hs
    FROM sys.sysdatabases S LEFT OUTER JOIN msdb.dbo.backupset B ON B.database_name = S.name
    WHERE B.type LIKE ‘L’ AND S.name NOT LIKE ‘tempdb’
    GROUP BY S.Name ORDER BY S.Name

    /*******************************************************************************
    Detalle por Backups de los últimos 7 días
    ******************************************************************************/
    SELECT    database_name as DB, name AS Backup_Name, backup_finish_date AS LastBackup,
    CASE [type] WHEN ‘D’ THEN ‘Full’ 
    WHEN ‘L’ THEN ‘Log’
    WHEN ‘I’ THEN ‘Differential’ ELSE ‘Other’
    END AS Tipo_Backup
    FROM    msdb.dbo.backupset B
    WHERE backup_finish_date DATEADD(dd,-7,GETDATE())
    ORDER BY database_name, backup_finish_date desc

Tags

tsql (27)mssql (26)sql (20)devops (20)dotnet (18)docker (15)performance (14)contenedores (11)dotnet10 (10)linux (9)csharp (8)microservicios (7)angular (7)angular21 (7)sql server (6)issabel (6)docker-compose (6)typescript (6)mysql (5).NET (5)