Explorar trabalhos elásticos

Concluído

Um dos motivos pelos quais vários DBAs se tornaram tão familiarizados com o serviço de Automação do Azure é o fato do Banco de Dados SQL do Azure não ter tido no início funcionalidades para executar trabalhos agendados.

O recurso de trabalhos elásticos permite executar um conjunto de scripts T-SQL em uma coleção de servidores ou bancos de dados como um trabalho único ou usando um agendamento definido. Os trabalhos elásticos funcionam de modo semelhante aos trabalhos do SQL Server Agent, exceto pelo fato de que eles estão limitados a executar o T-SQL. Os trabalhos funcionam em todos os níveis do Banco de Dados SQL do Azure. Os trabalhos do SQL Agent continuam a ser usados para automação de tarefas no SQL Server e também estão incluídos nas Instâncias Gerenciadas de SQL do Azure.

Screenshot of the elastic job architecture diagram.

Para configurar Trabalhos Elásticos, será preciso obter um Agente de Trabalho e um banco de dados dedicados ao gerenciamento dos trabalhos. O nível de serviço recomendado para o banco de dados de trabalhos é S1 ou superior, e o nível de serviço ideal dependerá do número de trabalhos que você está executando e da frequência desses trabalhos.

Vamos examinar os componentes de trabalhos elásticos:

  • Agente de trabalho elástico – seu recurso do Azure para executar e gerenciar trabalhos.
  • Banco de dados de trabalho – um banco de dados dedicado a gerenciar seus trabalhos.
  • Grupo de destino – uma coleção de servidores, pools elásticos e bancos de dados individuais nos quais um trabalho será executado.
  • Trabalho – um ou mais scripts T-SQL que compõem uma etapa de trabalho.

Caso um servidor ou pool elástico seja o destino, uma credencial deverá ser criada dentro do banco de dados mestre do servidor ou pool para que o agente de trabalho possa enumerar bancos de dados dentro dele. Somente uma credencial do banco de dados será necessária para obter um banco de dados individual. As credenciais devem ter os privilégios mínimos necessários para executar a etapa do trabalho.

Screenshot of the elastic job agent creation page.

Você pode criar um agente de trabalho elástico por meio do portal do Azure. Na página Agente de trabalho elástico, forneça um nome para seu agente e especifique um banco de dados SQL para seu banco de dados de trabalho.

Você pode criar um grupo de destino usando o PowerShell ou o T-SQL. O trecho a seguir cria o grupo de destino MyServerGroup, incluindo todos os bancos de dados que existem no servidor no momento da execução. Este trecho de código assume que a variável $jobAgent e a variável $targetServerName foram fornecidas anteriormente.

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

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

O trecho de código abaixo cria um trabalho elástico e adiciona etapas de trabalho usando o PowerShell. O Step1 é responsável por criar a tabela MyTable caso ela exista.

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 podemos observar acima, os scripts T-SQL executados por trabalhos elásticos deverão ser idempotentes, ou seja, caso o trabalho seja executado várias vezes, por acidente ou devido a uma falha, não haverá falhas no trabalho nem ele vai gerar resultados não intencionais. Você deverá ser capaz de executar o mesmo script várias vezes sem a ocorrência de falhas.

Por fim, execute o trabalho elástico MyFirstElasticJob usando o PowerShell.

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

Cenários de caso de uso

Trabalhos elásticos podem ser usados nos seguintes cenários:

  • Automatizar tarefas de gerenciamento a serem executadas em uma agenda específica
  • Aplicar alterações de esquema
  • Movimentações de dados
  • Coletar e agregar dados para relatórios ou outras finalidades
  • Carregar dados do Armazenamento de Blobs do Azure
  • Configurar trabalhos para serem executados em um conjunto de bancos de dados de modo recorrente, por exemplo, fora dos horários de pico
  • Processamento de dados em um grande número de bancos de dados, por exemplo, coleta de telemetria. Os resultados são então coletados em uma única tabela de destino para análise posterior.