Script de mantenimiento en SQL Server Express

Hola a todos. En la entrada de hoy os vamos a enseñar a generar un script de mantenimiento para implantarlo en SQL Server Express. Para quien no lo conozca, SQL Server Express es una versión gratuita para entornos productivos. Por este motivo, tiene varias limitaciones. Entre ellas no poder tener bases de datos con más de 10 GB (en versiones antiguas eran 4 GB) y la no disponibilidad de SQL Server Agent.

script de mantenimiento de SQL Server
Imagen de Wilfried Pohnke en Pixabay

¿Cómo podemos hacer un script de mantenimiento de SQL Server sin SQL Server Agent?

Si disponemos de una versión Standard o Enterprise tenemos a nuestra disposición el SQL Server Agent para programar jobs. Estos jobs se pueden programar para que se ejecuten diariamente, todos los días, cada hora…o ejecutarse de manera manual. Esto nos facilita mucho el programar los mantenimientos de la base de datos para que se ejecuten diariamente.

Recientemente hemos incorporado al servicio el mantenimiento de un servidor con SQL express en uno de nuestros clientes. Este hecho a provocado que tengamos que encontrar alguna forma de realizar el mantenimiento sin usar SQL Server Agent.

La solución nos la dio la combinación entre el script de Ola Hallengren y el programador de tareas de Windows.

Manos a la obra

Para conseguir implantar el mantenimiento necesitamos:

  • Crear el directorio «C:\SQLScripts» y «C:\SQLScripts\Logs\»
  • Crear el fichero «Mantenimiento.cmd» en «C:\SQLScripts»
  • Insertar el siguiente código:
sqlcmd -E -S .\SQLEXPRESS -d base_de_datos_donde_esta_instalado_ola_hallengren -Q "EXECUTE dbo.IndexOptimize @Databases = 'USER_DATABASES', @FragmentationLow = NULL,@FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE', @FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE', @FragmentationLevel1 = 5, @FragmentationLevel2 = 30, @UpdateStatistics = 'ALL', @OnlyModifiedStatistics = 'Y',@LogToTable = 'Y'" -b -o C:\SQLScripts\Logs\LogMantenimiento.txt

En este código estamos realizando el mantenimiento de todas las bases de datos usuario siguiendo las recomendaciones de Microsoft e indicándole que guarde un histórico en la tabla «CommandLog» del script. Además, generará un log en «C:\SQLScripts\Logs\LogMantenimiento.txt». Este fichero al no tener fecha o alguna variable, se va reemplazando cada vez que se ejecute.

Una vez realizado el mantenimiento ejecutando el script, y comprobando que funciona todo bien. Solo faltaría crear una tarea desde el Programador de tareas de Windows, que llame a esta función.

¿Demasiado complejo?¿No te funciona? Confía en los profesionales y asegúrate de realizar un mantenimiento adecuado e implantarlo en tu entorno. Nos vemos en próximas entradas.

¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.

Sígue a GPS en LinkedIn

Deja una respuesta

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