Mantenimiento automático de índices en múltiples bases de datos SQL Server

Un RunBook de Azure listo para usar.

Con el tiempo, los índices de una base de datos SQL Server pueden fragmentarse debido a inserciones, eliminaciones o actualizaciones. Esta fragmentación reduce la eficiencia de las consultas, incrementa el uso de disco y degrada el rendimiento general del sistema. Cuando se manejan múltiples bases de datos distribuidas, como sucede en sistemas multicliente, mantener los índices en buen estado no es solo una buena práctica, es una necesidad operativa.

El problema

La reconstrucción o reorganización manual de índices requiere:

  • Diagnóstico constante del estado de fragmentación.
  • Revisión tabla por tabla.
  • Decisiones sobre qué acción aplicar (REBUILD o REORGANIZE).

Y cuando esto se multiplica por decenas de bases, se convierte en una tarea insostenible. Además, muchos entornos no cuentan con herramientas avanzadas de mantenimiento automatizado.

La solución: mantenimiento automatizado por runbook

Desarrollé un script en PowerShell que puede ejecutarse como runbook en Azure Automation (PowerShell 5.1). Este script recorre automáticamente cada base definida, revisa todas sus tablas (excepto una excluida si se desea) y detecta la fragmentación de cada índice:

  • Si la fragmentación es mayor a un umbral leve (por defecto 5%), se reorganiza.
  • Si la fragmentación es mayor al umbral crítico (por defecto 30%), se reconstruye.

Todo esto sin necesidad de intervención manual, ideal para programarse en horas de baja carga (como la madrugada).

Características principales

  • Ejecutable como runbook en cuentas Azure Automation.
  • Compatible con SQL Server estándar o Azure SQL.
  • Variables configurables: umbrales y tabla excluida.
  • Aplica REBUILD o REORGANIZE según necesidad real.
  • Limpia memoria y recursos tras cada operación para mantener estabilidad.

Casos de uso

  • Bases judiciales o empresariales distribuidas con alto volumen de consultas.
  • Entornos donde se realizan muchas inserciones y actualizaciones.
  • Sistemas donde el mantenimiento nocturno debe ser autónomo y sin errores.

Resultado esperado

Cada ejecución mantiene los índices limpios, estables y alineados con el rendimiento esperado del sistema. El script puede ajustarse fácilmente según necesidades específicas (cambiar umbrales, excluir tablas específicas, etc.).

Esta es una solución práctica y efectiva que permite enfocarse en tareas de mayor valor, sin descuidar el corazón del rendimiento de tus bases de datos.

Ver código y ejemplos

Puedes acceder al script completo, adaptarlo o reutilizarlo desde el repositorio oficial:
👉 Repositorio en GitHub
👉 Enlace al runbook en GitHub

Artículos relacionados

👉 Sincronización estructural de campos automática en bases de datos distribuidas

👉 Sincronización estructural de tablas automática en bases de datos distribuidas


¿Te gustó lo que encontraste aquí?

Si este contenido te fue útil o te inspiró, considera apoyar esta iniciativa.
Aquí sigo, creando recursos que aporten claridad, estructura y propósito en tu camino.


🤓 Nuevos contenidos que podrían interesarte…


💎 ¿Quieres ver contenido potente y bien estructurado?


🙂 Explora otras categorías…

5 1 votar
Article Rating
Suscribirse
Notificarme sobre
guest
0 Comments
Más antiguos
Más recientes Más votados
Comentarios en línea
Ver todos los comentarios
Scroll to Top