• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Copias de seguridad automáticas en SQL Server con rotación de archivos

septiembre 16, 2025 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 10 minutos

Las bases de datos son el corazón de casi cualquier sistema de información moderno. Ya se trate de un ERP, una aplicación web, un sistema de gestión de clientes o una plataforma de comercio electrónico, todo depende de que los datos estén disponibles en el momento en que los usuarios los necesiten. Y si hay algo que hemos aprendido con los años en el mundo de la administración de sistemas y bases de datos, es que los fallos ocurren: discos duros que se corrompen, servidores que se apagan sin previo aviso, errores humanos que eliminan información importante e incluso ataques externos que ponen en riesgo la integridad de los datos.

Frente a todos estos escenarios, las copias de seguridad son la red de seguridad indispensable. Sin ellas, un error aparentemente pequeño puede convertirse en un desastre irreparable. Con ellas, en cambio, es posible recuperar la operación en cuestión de minutos u horas, con un impacto mucho más controlado.

El problema es que, en la práctica, hacer copias de seguridad de manera manual rara vez es sostenible. Es fácil olvidarse, ejecutarlas fuera de horario, sobrescribir archivos sin querer o incluso perder la noción de cuál fue la última copia válida. La solución pasa inevitablemente por la automatización. Si cada día, a la misma hora, SQL Server se encarga de generar un backup y lo guarda en una ubicación conocida, el administrador puede dormir tranquilo sabiendo que el sistema estará protegido.

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
En Analytics Lane
Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En este tutorial vamos a recorrer, paso a paso, todo lo necesario para programar copias de seguridad automáticas en SQL Server. Partiremos de lo más básico, explicando por qué conviene automatizarlas y cómo funciona el servicio SQL Server Agent. Luego veremos cómo habilitar este servicio en caso de que esté deshabilitado, y avanzaremos hacia la creación manual de un Job de backup con rotación de archivos de manera que siempre se guarden los últimos siete días. Más adelante explicaremos cómo probar el procedimiento para asegurarnos de que funciona, y finalmente veremos cómo lograr todo lo mismo a través de un script en T-SQL para quienes prefieren la vía programática o necesitan replicar la configuración en varios servidores. Cerraremos con una reflexión sobre buenas prácticas y conclusiones.

El objetivo es que este texto sirva como guía práctica pero también como documento de referencia, de manera que cualquier administrador, incluso con poca experiencia previa, pueda implementarlo de forma sencilla.

La importancia de programar las copias de seguridad

Hacer copias de seguridad en SQL Server no es simplemente una buena idea: es una obligación en cualquier entorno profesional. Pero lo realmente crítico es que esas copias no dependan de la memoria o la buena voluntad de una persona. Si un administrador tiene que ejecutar manualmente el comando todos los días, tarde o temprano fallará: porque se le pasó la hora, porque estaba de vacaciones o porque alguien más estaba usando la base de datos y decidió posponerlo.

La programación de copias de seguridad responde a la necesidad de que el proceso sea confiable, repetible y resistente a olvidos. Cuando un sistema está en producción y da soporte a procesos críticos de negocio, la pérdida de unas pocas horas de datos puede tener consecuencias millonarias. Y lo que es peor: puede dañar la confianza de los equipos internos y los clientes.

Otro punto clave es la consistencia. Programar un backup siempre a la misma hora permite integrarlo con otros procesos de mantenimiento. Por ejemplo, puede hacerse después de las ventanas de carga masiva de datos, o antes de ejecutar una tarea que pueda modificar estructuras críticas. De este modo, si algo sale mal, siempre se sabe que la copia de seguridad refleja un estado estable y confiable de la base.

La rotación de copias de seguridad es otro aspecto fundamental. Si simplemente acumulamos archivos día tras día, en cuestión de semanas o meses el disco destinado a backups se llenará, generando un problema igual de grave: la tarea fallará porque no habrá espacio suficiente. Por eso es recomendable establecer políticas de retención claras. Una de las más sencillas consiste en mantener solo los últimos siete días, de modo que siempre tengamos a mano una semana completa de historia, pero sin riesgo de saturar el almacenamiento.

Publicidad


Activar SQL Server Agent

SQL Server Agent es el componente encargado de ejecutar trabajos programados dentro de SQL Server. Funciona como un servicio en segundo plano que se mantiene en ejecución y es capaz de disparar Jobs en función de horarios, eventos o condiciones específicas.

La mayoría de los administradores lo conocen principalmente como la herramienta para automatizar copias de seguridad, aunque sus capacidades son más amplias: también permite ejecutar scripts de mantenimiento, lanzar procedimientos almacenados, monitorear alertas e incluso enviar notificaciones por correo electrónico.

El problema es que SQL Server Agent no siempre está activo. Dependiendo de la edición instalada y de cómo se configuró el servidor, puede estar deshabilitado por defecto. Antes de intentar crear un Job, es fundamental verificar que el servicio esté en ejecución.

Para comprobarlo, basta con abrir SQL Server Management Studio y expandir el árbol de objetos hasta encontrar la sección SQL Server Agent. Si aparece con un icono verde, significa que está en ejecución. Si aparece con un icono rojo o gris, está detenido o deshabilitado.

En el caso de que este detenido, lo primero que debemos hacer es iniciarlo. Existen varias formas: desde SQL Server Configuration Manager, desde la consola de servicios de Windows o incluso desde un comando T-SQL si tenemos permisos suficientes.

SQL Sever Configuration Manager donde se debe configurar el Agente de SQL Server para poder realizar copias de seguridad automáticas. Por defecto es el Agente de SQL esta desactivado.

En SQL Server Configuration Manager, basta con ir a la sección de servicios, localizar SQL Server Agent correspondiente a nuestra instancia y darle a iniciar. Desde allí también podemos configurar el modo de inicio para que sea automático, de manera que cada vez que se reinicie el servidor, el agente arranque solo.

Otra alternativa es hacerlo desde services.msc en Windows. Allí aparecerá como SQL Server Agent (MSSQLSERVER) en el caso de una instancia por defecto, o con el nombre de la instancia en configuraciones personalizadas.

Finalmente, si preferimos comprobarlo desde T-SQL, podemos ejecutar un procedimiento almacenado extendido:

EXEC xp_servicecontrol 'QUERYSTATE', 'SQLServerAgent';

El resultado nos dirá si está en estado RUNNING o STOPPED. Si está detenido, también podemos pedirle que arranque con:

EXEC xp_servicecontrol 'START', 'SQLServerAgent';

Es importante destacar que esto requiere permisos de administrador sobre el sistema, no basta con tener acceso a la base de datos.

Una vez que el agente está habilitado, podemos proceder con la creación de nuestro Job.

Creación manual de un Job de backup diario con rotación de 7 días

Imaginemos que tenemos una base de datos llamada MiBase y queremos asegurarnos de que cada día a las dos de la madrugada se genere un backup. Además, queremos que no se acumulen indefinidamente, sino que se roten de modo que cada día de la semana se sobreescriba el archivo correspondiente al mismo día de la semana anterior.

Esto puede lograrse fácilmente con un pequeño script que construye el nombre del archivo en función del día de la semana.

El procedimiento para crear el Job es bastante intuitivo desde SQL Server Management Studio. Lo primero es abrir el árbol de objetos, ir a SQL Server Agent, hacer clic derecho sobre Jobs y seleccionar New Job. En la ventana que aparece podemos darle un nombre significativo, por ejemplo Backup\_MiBase\_Diario.

Captura de pantalla en la que se configura el Job
Configuración inicial del Job en la que se le debe poner un nombre significativo para identificar la tarea.

Luego vamos a la pestaña de Steps y creamos un nuevo paso. El paso será de tipo Transact-SQL script, ejecutado sobre la base de datos master. En el área de comandos pegamos un pequeño código:

DECLARE @DiaSemana INT;
SET @DiaSemana = DATEPART(WEEKDAY, GETDATE());

DECLARE @FileName NVARCHAR(200);
SET @FileName = 'C:\Backups\MiBase_' + CAST(@DiaSemana AS NVARCHAR(1)) + '.bak';

BACKUP DATABASE MiBase
TO DISK = @FileName
WITH INIT, STATS = 10, COMPRESSION;
Captura de pantalla en la que se configura la tarea de copia de seguridad mediante la inclusión del script T-SQL adaptado a la base de datos.
Pantalla en la que se configura la tarea de copia de seguridad mediante la inclusión del script T-SQL adaptado a la base de datos.

Lo que hace este script es tomar el número del día de la semana (1 para domingo, 2 para lunes y así sucesivamente hasta 7 para sábado) y construir un nombre de archivo con ese número. De este modo, el domingo siempre sobrescribe MiBase\_1.bak, el lunes MiBase\_2.bak y así sucesivamente. Con la opción WITH INIT nos aseguramos de que se sobreescriba el archivo existente en lugar de anexar información.

A continuación, pasamos a la pestaña de Schedule. Allí creamos una nueva programación con nombre Diario\_2AM, indicamos que debe ocurrir cada día y establecemos la hora de inicio en 02:00:00.

Captura de pantalla en la que se programa la tarea a las 2:00 de cada día.
Ventana Schedule en la que se puede indicar cuando se debe realziar la copia de seguridad de la base de datos SQL Server y la frecuencia con la que se realiza.

Guardamos y listo: el Job quedará programado.

Publicidad


Probar que el Job funciona

Una de las mejores prácticas en administración de bases de datos es no confiar ciegamente en que algo funcionará porque lo configuramos. Es fundamental probarlo.

La forma más sencilla es lanzar el Job manualmente. Basta con hacer clic derecho sobre el Job recién creado en la lista de SQL Server Agent, seleccionar “Start Job at Step” y confirmar. Se abrirá una ventana mostrando el progreso y, si todo salió bien, aparecerá el estado “Succeeded”.

En ese momento podemos ir a la carpeta C:\Backups y comprobar que se creó un archivo con extensión .bak correspondiente al día de la semana. Si volvemos a ejecutarlo el mismo día, veremos que se sobrescribe. Si esperamos al día siguiente, se creará otro archivo con número distinto.

De esta forma validamos no solo que el Job se ejecuta correctamente, sino también que la lógica de rotación funciona como esperábamos.

Captura de pantalla en la que se muestra como el proceso de copia de seguridad ha finalizado correctamente.
Ventana en la que puede comprobar como la copia de seguridad lanzada manualmente se ha ejecutado, lo que demuestra que el script T-SQL es valido

Creación del Job mediante script T-SQL

Aunque la interfaz gráfica es amigable, muchos administradores prefieren trabajar con scripts porque son más fáciles de replicar en múltiples servidores, más portables y permiten mantener un control de versiones.

SQL Server ofrece procedimientos almacenados para crear Jobs directamente desde T-SQL. El siguiente script genera exactamente el mismo trabajo que describimos antes:

USE msdb;
GO

EXEC sp_add_job
    @job_name = N'Backup_MiBase_Diario';

EXEC sp_add_jobstep
    @job_name = N'Backup_MiBase_Diario',
    @step_name = N'Realizar Backup',
    @subsystem = N'TSQL',
    @database_name = N'master',
    @command = N'
    DECLARE @DiaSemana INT;
    SET @DiaSemana = DATEPART(WEEKDAY, GETDATE());

    DECLARE @FileName NVARCHAR(200);
    SET @FileName = ''C:\Backups\MiBase_'' + CAST(@DiaSemana AS NVARCHAR(1)) + ''.bak'';

    BACKUP DATABASE MiBase
    TO DISK = @FileName
    WITH INIT, STATS = 10, COMPRESSION;
    ';

EXEC sp_add_schedule
    @schedule_name = N'Diario_2AM',
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 20000;

EXEC sp_attach_schedule
    @job_name = N'Backup_MiBase_Diario',
    @schedule_name = N'Diario_2AM';

EXEC sp_add_jobserver
    @job_name = N'Backup_MiBase_Diario',
    @server_name = N'(LOCAL)';
GO

Ejecutando este código en la base de datos msdb tendremos el Job creado, programado y listo para funcionar.

Publicidad


Conclusiones

Programar copias de seguridad en SQL Server no es un lujo ni una opción secundaria, es una parte esencial de cualquier estrategia de administración de bases de datos. Depender de que alguien ejecute un comando manualmente es abrir la puerta a errores humanos, omisiones y riesgos innecesarios.

SQL Server Agent, correctamente habilitado y configurado, ofrece la forma más sencilla y confiable de automatizar estas tareas. Ya sea que prefiramos configurarlo manualmente desde SQL Server Management Studio o que optemos por la vía de los scripts T-SQL para mayor control y portabilidad, el resultado será el mismo: un proceso que se ejecuta todos los días a la misma hora, que genera copias de seguridad consistentes y que rota automáticamente los archivos para no saturar el disco.

La estrategia de rotación de siete días es simple pero efectiva: siempre sabremos que disponemos de una semana completa de copias, suficiente para la mayoría de los escenarios de recuperación rápida. En entornos más críticos, se pueden combinar con backups diferenciales y de logs para minimizar aún más la pérdida de datos.

El último consejo es quizás el más importante: no basta con generar backups, hay que probar periódicamente su restauración. Un backup que no puede restaurarse es como no tener nada. Por eso es recomendable establecer también un procedimiento de validación en un entorno de pruebas, donde se restaure la base de datos desde los archivos generados y se confirme que los datos están íntegros.

Con estas prácticas, cualquier organización estará mucho mejor preparada frente a fallos inevitables. Porque los fallos ocurrirán, pero lo que marcará la diferencia será nuestra capacidad de recuperación.

Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
  • La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento
  • Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows
  • Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte
  • Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)
  • Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato
  • ¿Media, mediana o moda en variables ordinales? Guía práctica para el análisis de datos
  • Cómo ejecutar JavaScript desde Python: Guía práctica con js2py
  • Cómo generar contraseñas seguras con Python (y entender su nivel de seguridad)

Publicado en: Herramientas Etiquetado como: Bases de datos, Buenas prácticas, SQL Server, Windows

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Curiosidad: ¿Por qué los datos “raros” son tan valiosos?

noviembre 6, 2025 Por Daniel Rodríguez

Cómo generar contraseñas seguras con Python (y entender su nivel de seguridad)

noviembre 4, 2025 Por Daniel Rodríguez

Cómo ejecutar JavaScript desde Python: Guía práctica con js2py

octubre 30, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Curiosidad: ¿Por qué los datos “raros” son tan valiosos? publicado el noviembre 6, 2025 | en Ciencia de datos, Opinión
  • Convertir un Notebook en un archivo de Python publicado el marzo 2, 2022 | en Herramientas, Python
  • Redondear la hora en Python para agrupar datos publicado el octubre 26, 2020 | en Python
  • Diferencias entre CPU, GPU, TPU y NPU publicado el abril 19, 2023 | en Herramientas
  • ¿Cómo comprobar si un archivo existe en Python sin generar excepciones? publicado el junio 2, 2025 | en Python

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto