FactuposBackup AY-FPBK-001

App Windows para respaldo automático diario de SQL Server, restauración de BDs, auto-logon y mapeo de unidades

Menú Ayuda

Introducción

FactuposBackup es una app de Windows que vive en la bandeja del sistema (tray) y se encarga de respaldar todas las bases de datos del SQL Server todos los días automáticamente, comprimirlas a ZIP, y restaurarlas cuando lo necesités.

Qué incluye

  • Respaldo automático diario a la hora que elijas (default 23:00).
  • Compresión ZIP de cada `.bak` para ahorrar espacio (~70-80% menos).
  • Retención configurable (default 7 días, después borra los viejos).
  • Reintentos automáticos de conexión y por BD si algo falla.
  • Botón para restaurar BDs en lote desde una carpeta con `.bak` o `.zip`.
  • Reinicio diario del server opcional (default 03:00).
  • Auto-logon de Windows (Server 2019/2022/2025).
  • Mapeo automático de unidades de red al iniciar.
  • Auto-update: la app se actualiza sola cuando publicamos versión nueva.
Dónde corre La app debe instalarse en el mismo server donde está el SQL Server. La ruta `R:\BACKUPTEMP` (o la que configures) es del filesystem del SQL Server, no del cliente. Por eso la app conecta a `127.0.0.1` por default.

Instalación

Requisitos previos

  • Windows Server 2019, 2022 o 2025 (también funciona en Windows 10/11).
  • Microsoft ODBC Driver 17 o 18 for SQL Server. Descargar de:
    https://learn.microsoft.com/sql/connect/odbc/download-odbc-driver-for-sql-server
  • SQL Server local con autenticación SQL habilitada (Mixed Mode), usuario `sa` o equivalente con permisos de BACKUP.

Pasos

  1. En el menú principal del sistema web, ir a Herramientas → Backup → FactuposBackup (Windows).
  2. Descargar FactuposBackup.exe.
  3. Copiarlo al server SQL en una carpeta como C:\FactuposBackup\.
  4. Doble click para abrir.
  5. Llenar la sección Configuración (ver siguiente sección).
Tamaño y dependencias El .exe pesa ~10 MB e incluye Python + todas las librerías embebidas. No hace falta instalar Python ni nada más.

Configuración inicial

La primera vez que abrís la app, llená estos campos en la sección Configuración:

  • Servidor SQL — default 127.0.0.1 (localhost). Si tenés instancia nombrada: localhost\SQLEXPRESS.
  • Usuario — default sa.
  • Password — campo enmascarado. Click en "Mostrar" para verificar.
  • Ruta backup — default R:\BACKUPTEMP. Click en `...` para elegir otra carpeta.
  • Hora diaria — formato HH:MM 24h, default 23:00.
  • Retención (días) — borra ZIPs > N días. 0 = no borra nada.
  • Comprimir a ZIP — checkbox. Si lo desmarcás, deja el `.bak` sin comprimir.

Después marcá:

  • Iniciar con Windows — registra la app en el Run del registro para que arranque al login.
  • Iniciar minimizado en la bandeja — al arrancar va directo al tray sin mostrar la ventana.

Click en Probar conexión → debe mostrar "Conexión exitosa, N BDs encontradas". Después Guardar configuración.

Defaults útiles La app viene precargada con server 127.0.0.1, user sa, password Stms.2003@svr$ y ruta R:\BACKUPTEMP. Si esos son los correctos, solo confirmás y ya.

Respaldo diario automático

Una vez configurada y abierta (residente en bandeja), la app dispara el respaldo todos los días a la hora configurada. El proceso por BD:

  1. Conecta al SQL.
  2. Lista todas las BDs activas (excluye master, tempdb, model, msdb).
  3. Por cada BD: BACKUP DATABASE [X] TO DISK WITH FORMAT, INIT, COMPRESSION.
  4. Comprime el `.bak` a `.zip` y borra el `.bak` original.
  5. Aplica retención (borra ZIPs viejos según los días configurados).

Reintentos a prueba de errores

  • Si la conexión SQL falla → 3 reintentos con espera creciente (10s, 20s, 30s).
  • Si una BD falla → 2 reintentos con 15s entre cada uno.
  • Si una BD agota los reintentos → se loguea como FALLA y continúa con las siguientes (no aborta el proceso).
  • Verificación de conexión viva entre BDs (SELECT 1); si se cayó, reabre antes de seguir.
La app debe estar abierta Para que el respaldo se dispare, la app tiene que estar corriendo (en bandeja). Por eso la X cierra a bandeja en vez de terminar la app. Si la cerrás con "Salir", no se dispara.

Respaldo manual ahora

Hay dos formas de disparar un respaldo sin esperar la hora:

  • El botón grande "▶ INICIAR RESPALDO AHORA" arriba de la ventana.
  • Click derecho en el icono de bandeja → Ejecutar respaldo ahora.

Avance en vivo

Mientras el respaldo corre, la tabla central muestra cada BD con su estado:

  • Pendiente (gris) — no empezó todavía.
  • Respaldando… (azul) — ejecutando BACKUP.
  • Comprimiendo… (azul) — armando el ZIP.
  • OK (verde) — terminada con éxito, muestra tamaño .bak/.zip y tiempo.
  • FALLA (rojo) — falló todos los reintentos.

Abajo hay un log oscuro con cada línea timestamp del proceso (también queda guardado en FactuposBackup.log al lado del .exe).

Restaurar BDs desde una carpeta

El botón "↺ RESTAURAR BDs…" arriba abre el modal de restauración en lote.

Cómo usar

  1. Click en ... de "Carpeta origen" para elegir la carpeta con los `.bak` o `.zip`.
  2. La app lista todos los archivos detectados con un checkbox `☑/☐` para elegir cuáles restaurar.
  3. Cada fila muestra una columna "Destino BD" con el nombre que se va a usar al restaurar.
  4. Las carpetas "Datos (.mdf)" y "Logs (.ldf)" vienen con los defaults D:\SqlData y C:\SqlLog (configurables y persistidos).
  5. Click en "↺ Restaurar seleccionadas" → confirmación → ejecuta.

Cómo se calcula el "Destino BD" automáticamente

La app toma lo que está antes del primer underscore del nombre del archivo. Ejemplos:

  • agrocentro_INVEFACON.bak → BD destino: agrocentro
  • factupos_20260514_230003.bak → BD destino: factupos
  • mibd.bak → BD destino: mibd
Editar el destino manualmente Doble click sobre la celda "Destino BD" para abrir un input y renombrar a mano. Útil si tu BD se llama mi_base_datos (con underscore en el nombre legítimo).

Nombres de archivos físicos limpios

El restore reubica los `.mdf`/`.ldf` con nombres limpios basados en el destino:

  • 1 datafile: {destino}.mdf
  • 1 log: {destino}_log.ldf
  • Varios datafiles: {destino}.mdf, {destino}_2.ndf, {destino}_3.ndf, …
Sobreescribe la BD destino El restore es WITH REPLACE, RECOVERY — si ya existe una BD con el nombre destino, la pisa. Hay confirmación previa, pero usalo con cuidado.

Bandeja del sistema

La app vive en la bandeja del sistema con un icono "SQL". Características:

  • El botón X de la ventana cierra a bandeja, no termina la app.
  • Click derecho en el icono → menú: Mostrar ventana / Ejecutar respaldo ahora / Salir.
  • Doble click en el icono = mostrar ventana.
  • Si marcaste "Iniciar con Windows" + "Iniciar minimizado", la app arranca al login y queda directo en la bandeja sin mostrar ventana.

El status bar dentro de la ventana muestra cuándo es la próxima corrida programada.

Reinicio diario del server

En la sección Configuración hay un checkbox:

[ ] Reiniciar el servidor diariamente a las [03:00]

Si lo activás, la app dispara shutdown /r /f /t 1 a la hora indicada — útil para mantener el server limpio (cierra sesiones colgadas, libera memoria, aplica updates pendientes).

El status bar lo muestra Cuando está activo, el status bar dice "Próxima corrida: ... | Próximo reinicio servidor: ...".

Auto-logon de Windows

En Server 2019 esto se hacía con netplwiz. En Server 2022 y 2025 esa opción ya no aparece directo. La app trae un botón que aplica los cambios necesarios al registro de Windows.

Cómo usar

  1. Sección Configuración → Auto-logon Windows: [Establecer auto-inicio].
  2. Se abre un dialog pidiendo:
    • Usuario (precargado con el usuario actual)
    • Password (campo oculto, checkbox "Mostrar password")
    • Dominio / equipo (precargado con el nombre del equipo)
  3. Click Aplicar.
  4. Reiniciar el server para probar.

Para revertir: Quitar auto-inicio. La app borra la clave del password y vuelve al login manual.

Requiere Administrador Esta función escribe en HKLM (Local Machine) del registro de Windows. Hay que correr la app con botón derecho → Ejecutar como administrador. Si no es admin, el dialog te avisa con el error "Acceso denegado".

El password queda en el registro en TEXTO PLANO (HKLM\…\Winlogon\DefaultPassword). Es como funciona el auto-logon de Windows, no es un bug de la app. Restringí permisos NTFS si es server crítico.

Unidades de red al iniciar

La app puede mapear automáticamente unidades de red al arrancar (equivalente a net use). Útil para que el server siempre tenga la Z: y X: disponibles sin tener que mapearlas a mano.

Defaults precargados

  • Z:\\192.168.7.32\Datos (user: olman)
  • X:\\192.168.7.32\d (user: olman)

Editar la lista

Sección Configuración → Unidades de red: [Configurar…] abre un dialog con una tabla editable:

  • Letra (ej. Z, X, W)
  • UNC (ej. \\servidor\share)
  • Usuario
  • Password (oculto)
  • Persistente (checkbox — agrega /persistent:yes)
  • Botón por fila para quitar

Botón + Agregar para nuevas filas. Guardar y aplicar persiste en config y re-mapea inmediatamente.

Comportamiento al iniciar la app

  • Si la unidad ya está mapeada al MISMO UNC → no hace nada.
  • Si está mapeada a OTRO UNC → desmapea primero y vuelve a mapear.
  • Errores (timeout, credenciales inválidas) se loguean pero no rompen la app.

Auto-update

La app se actualiza sola cuando publicamos una versión nueva. No hay que andar copiando .exe a cada server.

Cómo funciona

  1. 5 segundos después de iniciar, la app consulta el manifest del servidor: https://invefacon.factupos.com/downloads/factupos_backup_version.json
  2. Compara la versión del manifest contra la versión local.
  3. Si hay versión nueva, te muestra un diálogo: "Hay nueva versión vX.Y.Z disponible. ¿Descargar e instalar?".
  4. Si aceptás: descarga el .exe nuevo a FactuposBackup.new.exe, escribe un updater.bat que espera a que la app actual cierre, reemplaza el .exe y relanza.
  5. La app se reinicia sola con la versión nueva.

Disparo manual

Botón "Buscar ahora" en la sección Configuración fuerza el chequeo en cualquier momento.

Desactivar

Desmarcar el checkbox "Buscar actualizaciones automáticamente al iniciar" en Configuración.

Ver versión actual La versión aparece en: title de la ventana, esquina inferior derecha, tooltip del icono de bandeja, log al iniciar (=== FactuposBackup vX.Y.Z iniciada ===), y propiedades del .exe (botón derecho → Detalles).

Solución de problemas

"No hay ODBC Driver para SQL Server"

Falta instalar Microsoft ODBC Driver 17 o 18. Bajalo de:
https://learn.microsoft.com/sql/connect/odbc/download-odbc-driver-for-sql-server
Después reiniciá la app.

"Login failed for user 'sa'"

  • Probá las credenciales en SSMS para descartar.
  • Asegurate que SQL Server permite "SQL Server Authentication" (Mixed Mode), no solo Windows Authentication. Está en SSMS → botón derecho sobre el server → Properties → Security → "SQL Server and Windows Authentication mode".

"Cannot open backup device 'R:\BACKUPTEMP\...'. Operating system error 5 (Access is denied)"

La cuenta del servicio MSSQLSERVER no puede escribir en la carpeta de backup. Dale permisos de escritura sobre esa carpeta a la cuenta del servicio (típicamente NT SERVICE\MSSQLSERVER).

El respaldo no se dispara a las 23:00

  • La app debe estar corriendo (en bandeja). Si la cerraste con "Salir", no se dispara.
  • Verificá que el icono "SQL" esté en la bandeja a esa hora.
  • Mirá FactuposBackup.log al lado del .exe para ver qué pasó.

Auto-logon "Acceso denegado"

La app necesita correr como Administrador para escribir en HKLM. Cerrala, click derecho en FactuposBackup.exe → Ejecutar como administrador.

Mapeo de unidad falla

  • Probá manualmente desde CMD: net use Z: \\192.168.7.32\Datos /user:olman password
  • Si falla, revisá usuario, password y permisos del share.
  • Si funciona manual pero la app no, mirá el log para el mensaje exacto.

config.json corrupto

Si el archivo de configuración se corrompe (arrancó vacío o con caracteres raros), la app lo respalda como config.json.corrupt y arranca con defaults. No se cae. Solo reconfigurá y guardá.