Exploración de trabajos elásticos

Completado

Uno de los motivos por los que muchos administradores de bases de datos están tan familiarizados con Azure Automation es que, inicialmente, a Azure SQL Database le faltaban funcionalidades para los trabajos programados.

La característica de trabajos elásticos permite ejecutar un conjunto de scripts de T-SQL en una colección de servidores o bases de datos como un trabajo único o mediante una programación definida. Los trabajos elásticos funcionan de forma similar a los trabajos de Agente SQL Server, con la salvedad de que están limitados a ejecutar T-SQL. Los trabajos funcionan en todos los niveles de la base de datos de Azure SQL. Los trabajos de Agente SQL se siguen usando en la automatización de tareas de SQL Server y también se incluyen en las instancias de Azure SQL Managed Instance.

Screenshot of the elastic job architecture diagram.

Para configurar trabajos elásticos, se necesita un agente de trabajo y una base de datos dedicada para administrar los trabajos. El nivel de servicio recomendado para la base de datos de trabajos es S1 o superior, y el nivel de servicio óptimo dependerá del número de trabajos que se ejecuten y de la frecuencia de esos trabajos.

Vamos a revisar los componentes de los trabajos elásticos:

  • Agente de trabajo elástico: el recurso de Azure para ejecutar y administrar los trabajos.
  • Base de datos de trabajos: una base de datos dedicada a administrar los trabajos.
  • Grupo de destino: una colección de servidores, grupos elásticos y bases de datos únicas en las que se ejecutará un trabajo.
  • Trabajo: uno o varios scripts de T-SQL que componen un paso de trabajo.

Si un servidor o grupo elástico es el destino, debe crearse una credencial en la base de datos maestra del servidor o grupo para que el agente de trabajo pueda enumerar las bases de datos dentro. Para una sola base de datos, se necesita una credencial de base de datos. Las credenciales deben tener los privilegios mínimos necesarios para realizar el paso de trabajo.

Screenshot of the elastic job agent creation page.

Puede crear un agente de trabajo elástico mediante Azure Portal. En la página Agente de trabajos elásticos, asegúrese de proporcionar un nombre para el agente y especifique una base de datos SQL para la base de datos de trabajos.

Puede crear un grupo de destino mediante PowerShell o T-SQL. El fragmento de código siguiente crea el grupo de destino MyServerGroup, que incluye todas las bases de datos que existen en el servidor en el momento de la ejecución. En este fragmento de código se da por hecho que anteriormente se proporcionó la variable $jobAgent y la variable $targetServerName.

# create MyServerGroup target group
$serverGroup = $jobAgent | New-AzSqlElasticJobTargetGroup -Name 'MyServerGroup'

$serverGroup | Add-AzSqlElasticJobTarget -ServerName $targetServerName -RefreshCredentialName $masterCred.CredentialName

El fragmento de código siguiente crea un trabajo elástico y agrega pasos de trabajo mediante PowerShell. El paso 1 es responsable de crear la tabla MyTable si no existe.

Write-Output "Creating a new job..."
$jobName = "MyFirstElasticJob"
$job = $jobAgent | New-AzSqlElasticJob -Name $jobName -RunOnce

Write-Output "Creating job steps for $($jobName) job..."
$sqlText1 = "IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id('MyTable')) CREATE TABLE [dbo].[MyTable]([Id] [int] NOT NULL);"

$job | Add-AzSqlElasticJobStep -Name "Step1" -TargetGroupName $serverGroup.TargetGroupName -CredentialName $jobCred.CredentialName -CommandText $sqlText1

Como se puede ver anteriormente, los scripts de T-SQL que se ejecutan mediante trabajos elásticos deben ser idempotentes, lo que significa que, si el trabajo se ejecuta varias veces, ya sea por accidente o debido a un error del trabajo, el trabajo no generará errores ni producirá resultados no deseados. Debe poder ejecutar el mismo script varias veces sin errores.

Por último, ejecute el trabajo elástico MyFirstElasticJob mediante PowerShell.

Write-Output "Start the job..."
$jobExecution = $job | Start-AzSqlElasticJob
$jobExecution

Escenarios de casos de uso

Los trabajos elásticos se pueden usar en los escenarios siguientes:

  • Automatización de las tareas de administración para que se ejecuten según una programación específica.
  • Implementación de cambios de esquema.
  • Movimientos de datos
  • Recopilación y agregación de datos para informes u otros fines.
  • Carga de datos desde Azure Blob Storage
  • Configuración de trabajos para su ejecución en una colección de bases de datos periódicamente como, por ejemplo, fuera de las horas pico.
  • Procesamiento de datos en un gran número de bases de datos, por ejemplo, recopilación de telemetría. Los resultados se recopilan en una sola tabla de destino para su posterior análisis.