Criar, configurar e gerenciar trabalhos elásticosCreate, configure, and manage elastic jobs

Neste artigo, você aprenderá a criar, configurar e gerenciar trabalhos elásticos.In this article, you will learn how to create, configure, and manage elastic jobs.

Se você nunca tiver usado os Trabalhos elásticos, saiba mais sobre os conceitos de automação de trabalho no Banco de Dados SQL do Azure.If you have not used Elastic jobs, learn more about the job automation concepts in Azure SQL Database.

Criar e configurar o agenteCreate and configure the agent

  1. Crie ou identifique um S0 vazio ou um banco de dados SQL superior.Create or identify an empty S0 or higher SQL database. Esse banco de dados será usado como o Banco de dados de trabalhos durante a criação do agente de Trabalho Elástico.This database will be used as the Job database during Elastic Job agent creation.

  2. Crie um agente de trabalho elástico no portal ou com o PowerShell.Create an Elastic Job agent in the portal or with PowerShell.

    Criando um agente de Trabalho Elástico

Criar, executar e gerenciar trabalhosCreate, run, and manage jobs

  1. Crie uma credencial para a execução do trabalho no banco de dados de trabalho usando o PowerShell ou o T-SQL.Create a credential for job execution in the Job database using PowerShell or T-SQL.

  2. Defina o grupo de destino (os bancos de dados nos quais você deseja executar o trabalho) usando o PowerShell ou o T-SQL.Define the target group (the databases you want to run the job against) using PowerShell or T-SQL.

  3. Crie uma credencial de agente de trabalho em cada banco de dados em que o trabalho será executado (adicione o usuário (ou função) para cada banco de dados no grupo).Create a job agent credential in each database the job will run (add the user (or role) to each database in the group). Para obter um exemplo, confira o tutorial do PowerShell.For an example, see the PowerShell tutorial.

  4. Crie um trabalho usando o PowerShell ou o T-SQL.Create a job using PowerShell or T-SQL.

  5. Adicione etapas de trabalho usando o PowerShell ou o T-SQL.Add job steps using PowerShell or T-SQL.

  6. Execute um trabalho usando o PowerShell ou o T-SQL.Run a job using PowerShell or T-SQL.

  7. Monitore o status de execução do trabalho usando o portal, o PowerShell ou o T-SQL.Monitor job execution status using the portal, PowerShell or T-SQL.

    Portal

Credenciais para executar trabalhosCredentials for running jobs

Os trabalhos usam credenciais no escopo do banco de dados para se conectar aos bancos de dados especificados pelo grupo de destino após a execução.Jobs use database scoped credentials to connect to the databases specified by the target group upon execution. Se um grupo de destino contém servidores ou pools, essas credenciais no escopo do banco de dados são usadas para conexão com o banco de dados mestre a fim de enumerar os bancos de dados disponíveis.If a target group contains servers or pools, these database scoped credentials are used to connect to the master database to enumerate the available databases.

A configuração das devidas credenciais para executar um trabalho pode ser um pouco confusa e, portanto, tenha os seguintes pontos em mente:Setting up the proper credentials to run a job can be a little confusing, so keep the following points in mind:

  • As credenciais no escopo do banco de dados devem ser criadas no banco de dados de trabalhos.The database scoped credentials must be created in the Job database.
  • Todos os bancos de dados de destino devem ter um logon com permissões suficientes para que o trabalho seja concluído com êxito (jobuser no diagrama abaixo).All target databases must have a login with sufficient permissions for the job to complete successfully (jobuser in the diagram below).
  • As credenciais podem ser reutilizadas entre os trabalhos e as senhas de credencial são criptografadas e protegidas contra usuários que têm acesso somente leitura a objetos de trabalho.Credentials can be reused across jobs, and the credential passwords are encrypted and secured from users who have read-only access to job objects.

A imagem a seguir foi criada para ajudar na compreensão e na configuração das credenciais de trabalho adequadas.The following image is designed to assist in understanding and setting up the proper job credentials. Lembre-se de criar o usuário em cada banco de dados (todos os bancos de dados de usuário de destino) em que o trabalho será executado.Remember to create the user in every database (all target user dbs) the job needs to run.

Credenciais de trabalhos elásticos

Práticas recomendadas de segurançaSecurity best practices

Algumas considerações sobre melhores práticas para usar trabalhos elásticos:A few best practice considerations for working with Elastic Jobs:

  • Limite o uso das APIs somente a pessoas confiáveis.Limit usage of the APIs to trusted individuals.
  • As credenciais devem ter os privilégios mínimos necessários para executar a etapa do trabalho.Credentials should have the least privileges necessary to perform the job step. Para mais informações, veja Autorizações e permissões do SQL Server.For more information, see Authorization and Permissions SQL Server.
  • Ao usar um servidor e/ou um membro do grupo de destino de pool, é altamente recomendável criar uma credencial separada com direitos sobre o banco de dados mestre para exibir/listar bancos de dados, que será usada para expandir as listas de banco de dados dos servidores e/ou pools antes da execução do trabalho.When using a server and/or pool target group member, it is highly suggested to create a separate credential with rights on the master database to view/list databases that is used to expand the database lists of the server(s) and/or pool(s) prior to the job execution.

Desempenho, capacidade e limitações do agenteAgent performance, capacity, and limitations

Os Trabalhos Elásticos usam o mínimo de recursos de computação enquanto aguardam a conclusão dos trabalhos de longa execução.Elastic Jobs use minimal compute resources while waiting for long-running jobs to complete.

Dependendo do tamanho do grupo de destino de bancos de dados e do tempo de execução desejado para um trabalho (número de trabalhos simultâneos), o agente requer quantidades diferentes de computação e desempenho do banco de dados de trabalhos (quanto mais destinos e trabalhos, maior será a quantidade de computação necessária).Depending on the size of the target group of databases and the desired execution time for a job (number of concurrent workers), the agent requires different amounts of compute and performance of the Job database (the more targets and the higher number of jobs, the higher the amount of compute required).

Atualmente, a versão prévia está limitada a 100 trabalhos simultâneos.Currently, the preview is limited to 100 concurrent jobs.

Impedir que os trabalhos reduzam o desempenho do banco de dados de destinoPrevent jobs from reducing target database performance

Para que os recursos não fiquem sobrecarregados ao executar trabalhos em bancos de dados em um pool elástico do SQL, os trabalhos podem ser configurados para limitar o número de bancos de dados em que o trabalho pode ser executado simultaneamente.To ensure resources aren't overburdened when running jobs against databases in a SQL elastic pool, jobs can be configured to limit the number of databases a job can run against at the same time.

Defina o número de bancos de dados simultâneos em que um trabalho é executado definindo o parâmetro @max_parallelism do procedimento armazenado sp_add_jobstep no T-SQL ou Add-AzSqlElasticJobStep -MaxParallelism no PowerShell.Set the number of concurrent databases a job runs on by setting the sp_add_jobstep stored procedure's @max_parallelism parameter in T-SQL, or Add-AzSqlElasticJobStep -MaxParallelism in PowerShell.

Melhores práticas para a criação de trabalhosBest practices for creating jobs

Scripts idempotentesIdempotent scripts

Os scripts T-SQL de um trabalho devem ser idempotentes.A job's T-SQL scripts must be idempotent. Idempotente significa que, se o script tiver êxito e for executado novamente, o mesmo resultado ocorrerá.Idempotent means that if the script succeeds, and it is run again, the same result occurs. Um script pode falhar devido a problemas de rede transitórios.A script may fail due to transient network issues. Nesse caso, o trabalho repetirá automaticamente a execução do script por um número predefinido de vezes antes de desistir.In that case, the job will automatically retry running the script a preset number of times before desisting. Um script idempotente tem o mesmo resultado, mesmo que tenha sido executado com êxito duas vezes (ou mais).An idempotent script has the same result even if its been successfully run twice (or more).

É uma tática simples para testar a existência de um objeto antes de criá-lo.A simple tactic is to test for the existence of an object before creating it.

IF NOT EXIST (some_object)
    -- Create the object
    -- If it exists, drop the object before recreating it.

Da mesma forma, um script deve ser capaz de realizar a execução com êxito testando e combatendo logicamente quaisquer condições que encontrar.Similarly, a script must be able to execute successfully by logically testing for and countering any conditions it finds.

Próximas etapasNext steps