Para desplegar nuestras bases de datos en la nube tenemos diferentes alternativas. Esto no es…
Tareas automáticas en Azure SQL Database
Una de las labores más comunes en una base de datos es el programar la ejecución de tareas. Diferentes herramientas, y con diferentes alcances, pueden ser utilizadas cuando hablamos de la nube. Ahora veremos cómo programar tareas automáticas en Azure SQL Database.
Si quieres ver cómo crear una base de datos en la nube puedes ver la publicación y video en el artículo Configurar Azure SQL Database.
Antes de empezar
Si has pensado hacer lo mismo que haces en tu ambiente on premises, puedes encontrarte con una barrera. Azure SQL Database no cuenta con un SQL Server Agent, entonces no podrás programar un Job tradicional de SQL Server. Mira las características de Azure SQL.
¿Qué opciones tengo?
Automatizar tareas con un Runbook en Azure.
Necesitas crear un Automation Account
Ingresa a tu portal de Azure y busca el recurso llamado Automation Accounts. Primero vas a crear una.
1. Crea el Automation Account
Para crear este Automation Account, simplemente debes llenar los datos correspondientes al nombre de la cuenta que vas a crear, seleccionar la suscripción a la que pertenece el recurso, seleccionar (o crear un nuevo) Resource Group y finalmente seleccionar la locación del recurso.
Esta creación puede demorarse cerca a un minuto. Cuando el recurso ya está creado, el segundo paso es crear una Credential. Esto lo encuentras en el menú correspondiente a Shared Resources como puedes verlo en la imagen.
2. Adiciona una Credencial
Las credenciales deben ser de un usuario con acceso a la base de Azure SQL Database.
3. Importa el Módulo correspondiente a SQL
Ingresa al apartado correspondiente a Modules como se ve a continuación.
Verifica que tengas el Módulo SqlServer. Si no lo tienes en esa lista, ingresa a la siguiente opción en el Menú correspondiente a Modules gallery y busca SqlServer.
Selecciona el que se ve en la imagen anterior e impórtalo. Este proceso podría tomarse algunos minutos.
4. Crea un Runbook
La ejecución automática será a través de un Runbook. Búscalo en el menú como se ve en la imagen y créalo.
Ahora procederás a crear la tarea
Puedes usar este código para el PS.
$AzureSQLServerName = "azuredbdatoptim"
$AzureSQLDatabaseName = "SQLDB911"
$AzureSQLServerName = $AzureSQLServerName + ".database.windows.net"
$Cred = Get-AutomationPSCredential -Name "AzureSQL_Cred"
$SQLOutput = $(Invoke.sqlcmd -ServerInstance $AzureSQLServerName -Username $Cred.UserName -Password $Cred.GetNetworkCredential().Password -Database $AzureSQLDatabaseName -Query "SELECT getdate()")
Write-Output $SQLOutput
Dale click al botón de Save y luego al botón de Publish.
5. Programa la tarea
En la primera opción Schedule podrás crear una nueva agenda para la ejecución automática de tu tarea. No hay mucho que explicar aquí pues las opciones son claras.
Consideraciones a las tareas automáticas en Azure SQL Database
Ya tienes listas tus tareas y ya están programadas. Verifica siempre su correcto funcionamiento. Como siempre, el testing no está demás.
Si vas a hacer tareas muy fuertes, valida que tus recursos se encuentren en los parámetros que esperas.
Piensa en todas las tareas de mantenimiento que haces en un SQL Server on premises y cuestiona si son necesarias hacerlas también en tu nueva base en la nube.
Comments (6)
Los comentarios están cerrados.
consulta, necesito hacer un job scheduler de un procedimiento almacenado que se ejecute cada 30 minutos en la instancia de la base de datos es necesario utilizar azure function servless en #azure ??
Puedes utilizar este mismo procedimiento para realizar esto que mencionas
Hola, necesito hacer un job scheduler de un procedimiento almacenado cuyo resultado sea guardado en un archivo txt, ¿esto puedo hacerlo también? Si es asi, ¿cómo indicaría en qué lugar de Azure queda el archivo?
Saludos
Si estamos trabajando de Azure SQL Database, una alternativa es hacerlo a través de Data Factory y el ejemplo lo tienes aquí. Simplemente en lugar de escoger tablas, puedes indicar el SP
Tengo que ejecutar mantenimientos mensuales, para desfragmentar 600 Bases de datos. Ya realice pruebas de la forma en la mencionas, ejecutando un procedimiento almacenado en la BD. La prueba se realizó sobre una base de datos y funciono correctamente. ¿Debido a la cantidad de BD, esta es la mejor opción o existe alguna otra alternativa, más viable?
De antemano. Gracias.
Hola José Luis. Tal como dice el artículo, lo más importante de las tareas de mantenimiento es ver que ellas sean necesarias de hacer. Automatizaciones existen muchas maneras, encontrar prioridades es algo que depende 100% de nuestros entornos.