Script–Situación de los backup de base de datos

Lo sabemos. Debemos tener copias de respaldo de las bases de datos. ¿Pero, estamos seguros de que las tenemos? ¿Para todas las bases de datos? ¿De la forma correcta?.

No son pocas las veces que recibo llamadas para consultarme si hay una forma alternativa de recuperar una base de datos, porque “se acaban de dar cuenta” que no hay backup; o también “se acaban de dar cuenta” que los backup automáticos no han estado funcionando.

Bueno, ya en el blog hemos tratado el tema de la estrategia de recuperación de desastres y técnicas relativas a los backup (debajo de este artículo están los links relacionados).

En esta oportunidad compartimos un par de scripts que nos van a decir rápidamente la situación de los backup de las bases de datos de un servidor SQL Server.

Este primer script se basa en la tabla del sistema dbo.backupset, la cual se ubica en la base de datos del sistema msdb, y nos lista las copias de seguridad de las bases de datos, con la fecha de ejecución de la última copia completa (FULL). Sí, es cierto que podemos estar combinando copias completas con diferenciales o de transaction log, pero la copia completa marca el punto de partida para una recuperación y no debe ser muy antigua. El script incluye mensajes sobre la situación de la copia de seguridad, con un toque de humor que siempre ayuda.

Este es el script, el cual esté diseñado para ejecutarse en SQL Server 2008 o superior:

Aquí va el resultado (se han ocultado algunos nombres por tema de confidencialidad):

image

Lo que podemos notar aquí es que hay ciertas bases de datos que tienen muchos días sin ser respaldadas y algunas que nunca han sido respaldadas nunca. Esto es solo informativo. Hay que evaluar cada caso para conocer si es grave o no.

Ahora vamos a mostrar un segundo script que nos da información detallada sobre el historial de los backup. Además de utilizar la tabla del sistema dbo.backupset, también utiliza la tabla dbo.backupmediafamily para obtener detalles de la copia. Ambas tablas se ubican en la base de datos del sistema msdb. Aquí si consideramos todos los tipos de copia de seguridad para conocer la secuencia completa de cómo se está respaldando la base de datos. Aquí podemos encontrar información útil para planificación como el tamaño y tiempos de duración de los backup.

También podemos ver la unidad, ubicación y nombre del backup resultante. Tener en cuenta que esto es un historial, no necesariamente el backup se encuentra allí en el momento que se ejecuta el script, porque el archivo puede haber sido borrado o movido a otra ubicación.

Tener en cuenta que al inicio del script hay una variable que indica la cantidad de días de historia que se desea consultar. En este caso son 60 días.

Aquí va el script:

Aquí va el resultado (se han ocultado algunos nombres por tema de confidencialidad):

image

Aquí podemos ver si las fechas de los backups están acorde al plan de respaldos, que forma parte de la estrategia de recuperación de desastres. Seguramente estos backups se han programado mediante un trabajo del Agente de SQl Server (job) o un plan de mantenimiento, los cuales también deben ser revisados permanentemente para garantizar su correcto funcionamiento.

Espero que les sirvan estos scripts. No olviden compartirlo con la comunidad. ¡Hasta la próxima!

Artículos relacionados:

2 comentarios en “Script–Situación de los backup de base de datos

  • Hola, me puedes ayudar para que solo pueda generar el reporte de una sola BD, creo que en script me muestra el de todas las BD que tengo.

    • Hola Mauricio, para que muestres solo una base de datos agrega una condición WHERE db.name = ‘MiBaseDeDatos’ Agrga esa línea justo antes del ORDER BY

      Suerte!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.