Automatize tarefas de banco de dados para escalabilidade
Ao trabalhar com automação do SQL Server, é comum usar o SQL Agent para agendar trabalhos para fins de automação. Embora a Instância Gerenciada SQL do Azure e o SQL Server em execução em uma Máquina Virtual do Azure ainda tenham essa opção, o Banco de Dados SQL do Azure não tem, portanto, talvez seja necessário usar métodos de automação alternativos para obter resultados semelhantes.
Azure Automation
A Automação do Azure permite automação de processos, gerenciamento de configuração, integração total com opções da plataforma Azure, como controle de acesso baseado em função e ID do Microsoft Entra, e pode gerenciar recursos do Azure e locais.
Com a Automação do Azure, você pode controlar facilmente os recursos em VMs do Azure e locais. Por exemplo, você pode usar runbooks híbridos para automatizar tarefas como iniciar uma VM, executar um backup do SQL Server e desligar a VM, tornando-a econômica e eficiente.
Outro cenário comum é usar a Automação do Azure para operações de manutenção periódicas, como limpar dados obsoletos ou antigos, ou reindexar um banco de dados SQL.
Componentes
A Automação do Azure dá suporte a atividades de automação e gerenciamento de configuração. Vamos nos concentrar nos componentes de automação, mas você também pode usar a Automação do Azure para gerenciar atualizações e configurações de servidor.
Componente | Description |
---|---|
Runbook | Os runbooks são a unidade de execução na Automação do Azure. Os runbooks são definidos como um dos três tipos: um runbook gráfico baseado no PowerShell, um script do PowerShell ou um script Python. Os runbooks do PowerShell são mais comumente usados para gerenciar recursos SQL do Azure. |
Módulo | A Automação do Azure define um contexto de execução para o código PowerShell ou Python que você está executando em seu runbook. Para executar seu código, você precisa importar os módulos de suporte. Por exemplo, se você precisasse executar o Get-AzSqlDatabase cmdlet do PowerShell, precisaria importar o Az.SQL módulo do PowerShell para sua conta de automação. |
Credencial | As credenciais armazenam informações confidenciais que runbooks ou configurações podem usar em tempo de execução. |
Schedule | As agendas são vinculadas a runbooks e acionam um runbook em um momento específico. |
Para saber mais sobre os comandos da CLI do Azure e do PowerShell disponíveis para gerenciar o Banco de Dados SQL do Azure e os recursos da Instância Gerenciada do SQL do Azure, consulte os seguintes links: Módulo do PowerShell para SQL do Azure e CLI do Azure para SQL do Azure.
Tarefas elásticas
Uma das razões pelas quais muitos DBAs se tornaram tão familiarizados com a Automação do Azure é que o Banco de Dados SQL do Azure inicialmente não tinha recursos para trabalhos agendados.
Esta limitação significava que os DBAs tinham que encontrar soluções alternativas para lidar com essas tarefas essenciais de forma eficiente. A Automação do Azure surgiu como uma ferramenta valiosa neste cenário, oferecendo os meios para criar e gerenciar trabalhos agendados, automatizar processos de migração de banco de dados e executar tarefas de manutenção de rotina.
Arquitetura
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 uma agenda definida. Os trabalhos elásticos funcionam de forma semelhante aos trabalhos do SQL Server Agent, exceto pelo fato de estarem limitados à execução do T-SQL. Os trabalhos funcionam em todas as camadas do Banco de Dados SQL do Azure.
Para configurar o Elastic Jobs, você precisa de um agente de trabalho e um banco de dados dedicado ao gerenciamento de seus trabalhos. A camada de serviço recomendada para o banco de dados de tarefas é S1 ou superior, e a camada de serviço ideal dependerá do número de trabalhos que você está executando e da frequência desses trabalhos.
Vamos analisar os componentes de trabalhos elásticos:
- Agente de trabalho elástico - seu recurso do Azure para executar e gerenciar trabalhos.
- Base de dados de empregos - uma base de dados dedicada a gerir os seus trabalhos.
- Grupo de destino - uma coleção de servidores, pools elásticos e bancos de dados únicos nos quais um trabalho será executado.
- Trabalho - um ou mais scripts T-SQL que compõem uma etapa de trabalho.
Se um servidor ou pool elástico for o destino, uma credencial dentro do banco de dados mestre do servidor ou pool deverá ser criada para que o agente de trabalho possa enumerar os bancos de dados dentro. Para um único banco de dados, uma credencial de banco de dados é tudo o que é necessário. As credenciais devem ter o mínimo de privilégios necessários para executar o passo de tarefa.
Você pode criar um agente de trabalho elástico por meio do portal do Azure. Na página Agente de Trabalho Elástico, certifique-se de fornecer um nome para o agente e especifique um banco de dados SQL para o banco de dados de trabalho.
O script PowerShell a seguir cria um trabalho elástico chamado MyFirstElasticJob , adiciona uma etapa de trabalho a ele e executa um comando SQL para criar uma tabela se ela não existir no banco de dados.
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
Finalmente, execute o trabalho elástico MyFirstElasticJob .
Write-Output "Start the job..."
$jobExecution = $job | Start-AzSqlElasticJob
$jobExecution
Cenários de caso de utilização
Os trabalhos elásticos podem ser usados nos seguintes cenários:
- Automatize as tarefas de gerenciamento para serem executadas em um cronograma específico.
- Implante alterações de esquema.
- Movimentos de dados.
- Coletar e agregar dados para relatórios ou outros fins.
- Carregue dados do armazenamento de Blob do Azure.
- Configure tarefas para serem executadas numa coleção de bases de dados recorrentemente, como, por exemplo, fora das horas de ponta.
- Processamento de dados em um grande número de bancos de dados, por exemplo, coleta de telemetria. Os resultados são então compilados em uma única tabela de destino para análise posterior.
Migrar trabalhos do SQL Agent para trabalhos elásticos
Embora seja possível criar seus próprios scripts para migrar seus trabalhos do SQL Agent para trabalhos elásticos, há uma opção mais conveniente disponível. Existe um script baixável que facilita a cópia de trabalhos existentes do SQL Agent para trabalhos elásticos.
O script é uma ferramenta que automatiza o processo de conversão desses trabalhos, economizando tempo e esforço de ter que recriá-los manualmente no novo ambiente.
O arquivo é uma pasta compactada que contém o script e a documentação associada. Para usá-lo, você deve baixar o arquivo e seguir as instruções.
Depois de inserir todos os parâmetros listados nas instruções, a lista de tarefas aparecerá. O script criará cada trabalho individualmente em um estado desativado, supondo que ele ainda não exista. Após a criação de um trabalho, as etapas são adicionadas com as mesmas IDs, Texto do Comando, Tentativas de Repetição e Segundos de Intervalo de Repetição Inicial. A base de dados ligada à etapa do trabalho será o grupo-alvo. Se o grupo-alvo não existir, será criado automaticamente. A cópia não inclui agendas, alertas e notificações.
Migrar trabalhos do SQL Agent para o SQL Agent no Azure
A migração de trabalhos de um SQL Server local para a Instância Gerenciada SQL do Azure ou para o SQL Server em execução na Máquina Virtual segue um processo que deve parecer familiar para a maioria dos DBAs.
Em nosso cenário, suponha que migramos nosso SQL Server local para a Instância Gerenciada SQL do Azure. Precisamos migrar e ajustar vários trabalhos do SQL Agent para fazê-los funcionar perfeitamente no ambiente do Azure.
Avaliar dependências: identifique o trabalho do SQL Agent que você deseja migrar. Liste todas as dependências, como servidores vinculados, credenciais e bancos de dados, nas quais o trabalho depende
Script do trabalho do SQL Agent: Script do trabalho do SQL Agent no SQL Server como um script SQL. Você pode fazer isso clicando com o botão direito do mouse no trabalho no SQL Server Management Studio (SSMS) e selecionando "Trabalho de script como" -> "CRIAR para" -> "Nova janela do Editor de Consultas".
Modificar dependências de trabalho: revise o script SQL e modifique quaisquer dependências de trabalho que possam ter sido alteradas devido à migração. Por exemplo, se o trabalho fizer referência a um servidor vinculado ou a um caminho de arquivo no servidor local, atualize-o para corresponder ao novo ambiente.
Criação de trabalho do SQL MI do Azure: abra o SSMS ou o Azure Data Studio e conecte-se à sua Instância Gerenciada SQL do Azure. Crie um novo trabalho do SQL Agent usando o script gerado anteriormente.
Criar dependências no SQL MI do Azure: se seu trabalho do SQL Agent depender de servidores vinculados ou credenciais, crie-os no ambiente SQL MI do Azure. Verifique se eles correspondem à configuração do SQL Server local.
Agendar o trabalho: configure o agendamento do trabalho no SQL MI do Azure usando o SQL Server Agent. Você pode criar uma nova agenda e vinculá-la ao trabalho.
Testando: teste o trabalho do SQL Agent completamente no ambiente SQL MI do Azure para garantir que ele seja executado conforme o esperado. Verifique se há erros ou problemas que possam surgir devido a diferenças entre o SQL Server local e o SQL MI do Azure.
Monitoramento e manutenção: monitore o desempenho do trabalho e garanta que ele continue a atender aos seus requisitos no ambiente SQL MI do Azure. Ajuste todas as configurações ou agendas conforme necessário.