Verne academy

VERNE ACADEMY > BLOG > BLOG ACADEMY > AUTOMATIZACIóN DE TAREAS DE MANTENIMIENTO DE SQL PAAS

Automatización de tareas de mantenimiento de SQL PaaS

Contenidos del Post

En SQL Server, la correcta implementación de tareas de mantenimiento ha sido siempre esencial para el funcionamiento óptimo de las bases de datos. Con el traslado a la nube, la administración de bases de datos se ha simplificado y automatizado, lo que implica diversas ventajas. Sin embargo, la omisión de estas tareas afecta negativamente al rendimiento, repercutiendo en las aplicaciones y el negocio. Además, las bases de datos no optimizadas en la nube implican mayores costos para obtener mejor rendimiento.

Scripts de Ola Hallengren en SQL

Los scripts de Ola Hallengren son ampliamente reconocidos en nuestra comunidad de administradores de bases de datos SQL Server. Estos scripts automatizan tareas críticas como copias de seguridad, chequeos de integridad, mantenimiento de índices y actualización de estadísticas. Con esta solución, podemos personalizar nuestras acciones según las necesidades de nuestro entorno, garantizando así la integridad y el óptimo rendimiento de nuestras bases de datos.

Si dispones de un recurso SQL Server en Azure con varias bases de datos desplegadas y deseas utilizar tareas de mantenimiento para optimizar su funcionamiento, te invito a hacerlo empleando las herramientas que ofrece el propio portal de Azure. Es esencial permitir que los servicios y recursos de Azure accedan al servidor SQL Server. Para lograrlo, dirígete al portal de Azure, selecciona el servidor SQL Server correspondiente y marca la opción mencionada en la sección de redes. De esta manera, todos los recursos que crees podrán comunicarse con las bases de datos para realizar las tareas pertinentes.

Permitir que los servicios y recursos de Azure accedan al servidor SQL Server

Una vez cumplido este requisito, será necesario desplegar en el mismo grupo de recursos una cuenta de almacenamiento, una cuenta de automatización y un almacén de claves. Es importante asignar nombres intuitivos a estos recursos, respetando la nomenclatura recomendada por Microsoft, para que puedas trabajar con ellos de manera más sencilla.

En la cuenta de almacenamiento, crea un fileshare y añade manualmente un script de PowerShell similar al que se muestra a continuación. Como podrás observar, el script hace referencia a un almacén de claves desde donde se recuperarán el usuario y la contraseña del servidor SQL Server. Con estas credenciales, el script se conectará a las bases de datos especificadas e implementará las tareas de mantenimiento de Ola Hallengren, las cuales habrán sido descargadas y guardadas previamente en un directorio. Cuando completes los parámetros, podrás ejecutar este script a través de Azure CLI utilizando el fileshare que has creado.

				
					#AzureDatabases

# Nombre del Key Vault
$vault_name = "summitkeyvaultverne"

# Nombre del secreto que contiene el nombre de usuario y contraseña para conectarse al servidor SQL
$user_secret_name = "summitkeyvaultverne-username"
$password_secret_name = "summitkeyvaultverne-password"

# Nombre del Servidor y BBDD
$server_name = "summitsqlserver.database.windows.net"
$database_names = @("summitsqldatabase")

# Crea la carpeta para los scripts si no existe
New-Item -ItemType Directory -Force -Path "ola-scripts"

# Descarga los scripts de Ola Hallengren y los reemplaza si ya existen
Invoke-WebRequest -Uri "https://ola.hallengren.com/scripts/CommandLog.sql" -OutFile "ola-scripts/CommandLog.sql"
Invoke-WebRequest -Uri "https://ola.hallengren.com/scripts/CommandExecute.sql" -OutFile "ola-scripts/CommandExecute.sql"
Invoke-WebRequest -Uri "https://ola.hallengren.com/scripts/IndexOptimize.sql" -OutFile "ola-scripts/IndexOptimize.sql"
Invoke-WebRequest -Uri "https://ola.hallengren.com/scripts/DatabaseIntegrityCheck.sql" -OutFile "ola-scripts/DatabaseIntegrityCheck.sql"

# Recuperar los secretos del Key Vault
$user_name = (az keyvault secret show --name $user_secret_name --vault-name $vault_name --query value -o tsv)
$password = (az keyvault secret show --name $password_secret_name --vault-name $vault_name --query value -o tsv)

# Conecta al servidor SQL y ejecuta los scripts en cada base de datos
foreach ($database_name in $database_names) {
  # Ejecuta el script CommandLog.sql
  sqlcmd -S $server_name -U $user_name -P $password -d $database_name -i "ola-scripts/CommandLog.sql"
  
  # Ejecuta el script CommandExecute.sql
  sqlcmd -S $server_name -U $user_name -P $password -d $database_name -i "ola-scripts/CommandExecute.sql"
  
  # Ejecuta el script IndexOptimize.sql
  sqlcmd -S $server_name -U $user_name -P $password -d $database_name -i "ola-scripts/IndexOptimize.sql"
  
  # Ejecuta el script DatabaseIntegrityCheck.sql
  sqlcmd -S $server_name -U $user_name -P $password -d $database_name -i "ola-scripts/DatabaseIntegrityCheck.sql"
}
 

				
			

Desde Verne Tech podemos ayudarte con los Scripts de Mantenimiento de Ola Hallengren.

Habla con uno de nuestros técnicos y cuéntanos las necesidades de tu empresa.

Automatizar tareas de mantenimiento en SQL Server

Una vez implementadas las tareas de mantenimiento en tus bases de datos, el siguiente paso será automatizar su ejecución. Para ello, utiliza la cuenta de automatización. Dado que emplearemos comandos escritos en Transact-SQL, importa el módulo “SQL Server” previamente. Luego, procede a crear runbooks para llevar a cabo la ejecución de las tareas de mantenimiento.

Los runbooks que necesitarás serán de tipo PowerShell y emplearán la versión 5.1 para una mayor compatibilidad. Estos runbooks se conectarán a la base de datos utilizando las credenciales nativas de SQL Server que les asignemos. Puedes proteger estas credenciales creando variables en la cuenta de automatización y llamándolas desde el código de los runbooks.

DatabaseIntegrityCheck

				
					$myCredential = GET-AutomationPSCredential -Name 'summitcredentials'
$userName = $myCredential.UserName $securePassword = $myCredential.Password
$password = $myCredential.GetNetworkCredential().Password Invoke-Sqlcmd -
ServerInstance "summitsqlserver.database.windows.net" -DATABASE 
"summitsqldatabase" -Username $userName -Password $password -Query "EXECUTE 
dbo.DatabaseIntegrityCheck @Databases = 'summitsqldatabase', @LogToTable = 
'Y', @CheckCommands = 'CHECKDB'"
				
			

IndexOptimize

				
					$myCredential = Get-AutomationPSCredential -Name 'summitcredentials'
$userName = $myCredential.UserName
$securePassword = $myCredential.Password
$password = $myCredential.GetNetworkCredential().Password
Invoke-Sqlcmd -ServerInstance "summitsqlserver.database.windows.net" -
Database "summitsqldatabase" -Username $userName -Password $password -Query 
"EXECUTE dbo.IndexOptimize @Databases = 'summitsqldatabase', @LogToTable = 
'Y', @MinNumberOfPages = 5, @FragmentationLow = NULL, @FragmentationMedium = 
'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE', 
@FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE', 
@FragmentationLevel1 = 5, @FragmentationLevel2 = 30"

				
			

Es importante que, una vez creados los runbooks, los ejecutes manualmente para verificar que no se produce ningún error. Si todo ha ido bien, consulta la tabla CommandLog creada en la base de datos master para asegurarte de que la tarea de mantenimiento se ha ejecutado correctamente. Una vez confirmado su correcto funcionamiento, podrás programar las ejecuciones en la cuenta de automatización y asignarlas a los runbooks según tus necesidades.

Conclusiones

Has adquirido conocimientos fundamentales sobre el despliegue y automatización de tareas de mantenimiento para tus bases de datos en Azure. Has aplicado técnicas de optimización de índices y chequeos de integridad, mejorando el rendimiento y la estabilidad de las bases de datos.

Aunque no has implementado las copias de seguridad con los scripts de Ola Hallengren, en Azure estas tareas están automatizadas de forma nativa, garantizando una protección adecuada de los datos y una recuperación fiable.

Ahora cuentas con una solución de mantenimiento fácil de implementar y altamente flexible, lo que te permite aprovechar al máximo los recursos en la nube, optimizando procesos y reduciendo costes. Además, puedes integrar otros recursos de Azure para construir una solución de mantenimiento a mayor escala en el futuro. Con imaginación y dedicación, seguirás mejorando tu eficiencia operativa en Azure.

Cursos de SQL Server

Tengas el nivel que tengas, ¡tenemos un curso de SQL para ti! Desde un nivel básico, pasando por el intermedio y llegando al avanzado, hasta aprender planes de ejecución y a auditar tus propias consultas.
Facebook
Twitter
LinkedIn
Picture of Fernando Ávila González
Fernando Ávila González
Data & Cloud Engineer
Deja una respuesta

Artículos Recomendados

¿Buscas formación para

ti o para tu empresa?

Desarrolla tu talento o el de tu equipo con formaciones prácticas impartidas por expertos de la industria. Tú eliges la modalidad: formación privada, clases públicas online en directo o cursos on-demand (formación en video). Durante los cursos trabajamos sobre casos reales y soluciones aplicadas en proyectos, basadas en nuestros años de experiencia. ¿Hablamos? 😉

Carrito0
Aún no agregaste productos.
Seguir viendo
0