Creare, configurare e gestire processi elasticiCreate, configure, and manage elastic jobs

In questo articolo si apprenderà come creare, configurare e gestire processi elastici.In this article, you will learn how to create, configure, and manage elastic jobs.

Se non si sono mai usati processi elastici, vedere altre informazioni sui concetti di automazione dei processi nel database SQL di Azure.If you have not used Elastic jobs, learn more about the job automation concepts in Azure SQL Database.

Creare e configurare l'agenteCreate and configure the agent

  1. Creare o identificare un database SQL vuoto con livello di servizio S0 o superiore.Create or identify an empty S0 or higher SQL database. Questo database verrà usato come database di processo durante la creazione dell'agente di processo elastico.This database will be used as the Job database during Elastic Job agent creation.

  2. Creare un agente processo elastico nel portale o con PowerShell.Create an Elastic Job agent in the portal or with PowerShell.

    Creazione dell'agente di processo elastico

Creare, eseguire e gestire i processiCreate, run, and manage jobs

  1. Creazione di una credenziale per l'esecuzione del processo nel database del processo tramite PowerShell o T-SQL.Create a credential for job execution in the Job database using PowerShell or T-SQL.

  2. Definire il gruppo di destinazione (i database su cui si vuole eseguire il processo) usando PowerShell o T-SQL.Define the target group (the databases you want to run the job against) using PowerShell or T-SQL.

  3. Creare una credenziale di agente di processo in ogni database in cui verrà eseguito il processo, aggiungendo l'utente (o il ruolo) a ogni database del gruppo.Create a job agent credential in each database the job will run (add the user (or role) to each database in the group). Per un esempio, vedere l'esercitazione di PowerShell.For an example, see the PowerShell tutorial.

  4. Creare un processo usando PowerShell o T-SQL.Create a job using PowerShell or T-SQL.

  5. Aggiungere passaggi di processo usando PowerShell o T-SQL.Add job steps using PowerShell or T-SQL.

  6. Eseguire un processo usando PowerShell o T-SQL.Run a job using PowerShell or T-SQL.

  7. Monitorare lo stato di esecuzione del processo usando il portale, PowerShell o T-SQL.Monitor job execution status using the portal, PowerShell or T-SQL.

    di Microsoft Azure

Credenziali per l'esecuzione di processiCredentials for running jobs

I processi usano credenziali con ambito database per la connessione ai database specificati dal gruppo di destinazione al momento dell'esecuzione.Jobs use database scoped credentials to connect to the databases specified by the target group upon execution. Se un gruppo di destinazione contiene server o pool, queste credenziali con ambito database vengono usate per connettersi al database master ed enumerare i database disponibili.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.

La configurazione delle credenziali corrette per l'esecuzione di un processo può essere poco chiara, quindi tenere a mente i punti seguenti:Setting up the proper credentials to run a job can be a little confusing, so keep the following points in mind:

  • Le credenziali di ambito database devono essere create nel database di processo.The database scoped credentials must be created in the Job database.
  • Per completare correttamente il processo, tutti i database di destinazione devono avere un account di accesso con autorizzazioni sufficienti (jobuser nello schema seguente).All target databases must have a login with sufficient permissions for the job to complete successfully (jobuser in the diagram below).
  • Le credenziali possono essere riutilizzate in tutti i processi e le password delle credenziali vengono crittografate e protette dagli utenti che hanno accesso in sola lettura agli oggetti del processo.Credentials can be reused across jobs, and the credential passwords are encrypted and secured from users who have read-only access to job objects.

L'immagine seguente semplifica la comprensione e la configurazione delle credenziali di processo corrette.The following image is designed to assist in understanding and setting up the proper job credentials. Ricordarsi di creare l'utente in ogni database (tutti i database utente di destinazione) in cui è necessario eseguire il processo.Remember to create the user in every database (all target user dbs) the job needs to run.

Credenziali dei processi elastici

Procedure di sicurezza consigliateSecurity best practices

Alcune considerazioni sulle procedure consigliate per l'uso dei processi elastici:A few best practice considerations for working with Elastic Jobs:

  • Limitare l'utilizzo delle API a utenti attendibili.Limit usage of the APIs to trusted individuals.
  • Le credenziali devono avere i privilegi minimi necessari per eseguire il passaggio del processo.Credentials should have the least privileges necessary to perform the job step. Per altre informazioni, vedere Autorizzazioni in SQL Server.For more information, see Authorization and Permissions SQL Server.
  • Quando si usa un server e/o un membro del gruppo di destinazione del pool, è consigliabile creare una credenziale separata con diritti per il database master per visualizzare/elencare i database, usata per espandere gli elenchi dei database dei server e/o dei pool prima dell'esecuzione del processo.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.

Prestazioni, capacità e limitazioni degli agentiAgent performance, capacity, and limitations

I processi elastici usano risorse di calcolo minime in attesa del completamento di processi di lunga durata.Elastic Jobs use minimal compute resources while waiting for long-running jobs to complete.

A seconda delle dimensioni del gruppo di database di destinazione e del tempo di esecuzione desiderato per un processo (numero di processi simultanei), l'agente richiede prestazioni e risorse di calcolo differenti per il database di processo: maggiore è il numero di destinazioni e di processi, maggiore sarà la quantità di risorse di calcolo necessarie.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).

Attualmente, l'anteprima è limitata a 100 processi simultanei.Currently, the preview is limited to 100 concurrent jobs.

Impedire ai processi di ridurre le prestazioni del database di destinazionePrevent jobs from reducing target database performance

Per garantire che le risorse non siano sovraccariche quando si eseguono processi sul database in un pool elastico SQL, è possibile configurare i processi in modo da limitare il numero di database in cui un processo può essere eseguito contemporaneamente.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.

Impostare il numero di database simultanei in cui viene eseguito un processo impostando il parametro di @max_parallelism del stored procedure di sp_add_jobstep in T-SQL o Add-AzSqlElasticJobStep -MaxParallelism in 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.

Procedure consigliate per la creazione di processiBest practices for creating jobs

Script idempotentiIdempotent scripts

Gli script T-SQL di un processo devono essere idempotenti.A job's T-SQL scripts must be idempotent. Idempotente significa che se lo script ha esito positivo e viene eseguito di nuovo, si ottiene lo stesso risultato.Idempotent means that if the script succeeds, and it is run again, the same result occurs. Uno script potrebbe non riuscire a causa di problemi di rete temporanei.A script may fail due to transient network issues. In tal caso, il processo ritenterà automaticamente l'esecuzione dello script per un numero di volte predefinito prima di desistere.In that case, the job will automatically retry running the script a preset number of times before desisting. Uno script idempotente ha lo stesso risultato anche se è stato eseguito correttamente due volte o più.An idempotent script has the same result even if its been successfully run twice (or more).

Una semplice strategia consiste nel verificare l'esistenza di un oggetto prima di crearlo.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.

Analogamente, uno script deve poter essere eseguito correttamente verificando in modo logico e risolvendo qualsiasi condizione trovata.Similarly, a script must be able to execute successfully by logically testing for and countering any conditions it finds.

Passaggi successiviNext steps