Creación, configuración y administración de trabajos elásticosCreate, configure, and manage elastic jobs

En este artículo, obtendrá información sobre cómo crear, configurar y administrar trabajos elásticos.In this article, you will learn how to create, configure, and manage elastic jobs. Si no ha usado los trabajos elásticos, aprenda más sobre los conceptos de automatización de los trabajos en Azure SQL Database.If you have not used Elastic jobs, learn more about the job automation concepts in Azure SQL Database.

Creación y configuración del agenteCreate and configure the agent

  1. Cree o identifique una base de datos SQL vacía S0 o superior.Create or identify an empty S0 or higher SQL database. Esta base de datos se usará como la base de datos de trabajos durante la creación del agente de trabajos elásticos.This database will be used as the Job database during Elastic Job agent creation.

  2. Cree un agente de trabajos elásticos en el portal o con PowerShell.Create an Elastic Job agent in the portal, or with PowerShell.

    Creación de un agente de trabajos elásticos

Creación, ejecución y administración de trabajosCreate, run, and manage jobs

  1. Cree una credencial para la ejecución del trabajo en la base de datos de trabajos con PowerShell o T-SQL.Create a credential for job execution in the Job database using PowerShell, or T-SQL.

  2. Defina el grupo de destino (las bases de datos en las que desea ejecutar el trabajo) mediante PowerShell o T-SQL.Define the target group (the databases you want to run the job against) using PowerShell, or T-SQL.

  3. Cree una credencial del agente de trabajos en cada base de datos en las que debe ejecutarse el trabajo (agregue el usuario (o el rol) a cada base de datos del 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 obtener un ejemplo, consulte el tutorial de PowerShell.For an example, see the PowerShell tutorial.

  4. Cree un trabajo mediante PowerShell o T-SQL.Create a job using PowerShell, or T-SQL.

  5. Agregue pasos de trabajo mediante PowerShell o T-SQL.Add job steps using PowerShell or T-SQL.

  6. Ejecute un trabajo mediante PowerShell o T-SQL.Run a job using PowerShell, or T-SQL.

  7. Supervise el estado de ejecución del trabajo mediante el portal, PowerShell o T-SQL.Monitor job execution status using the portal, PowerShell, or T-SQL.

    Portal

Credenciales para la ejecución de trabajosCredentials for running jobs

Los trabajos usan credenciales de ámbito de base de datos para conectarse a las bases de datos que especifica el grupo de destino en la ejecución.Jobs use database scoped credentials to connect to the databases specified by the target group upon execution. Si un grupo de destino contiene servidores o grupos, estas credenciales de ámbito de base de datos se utilizan para conectarse a la base de datos maestra para enumerar las bases de datos disponibles.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 configuración de las credenciales adecuadas para ejecutar un trabajo puede ser un poco confusa, por lo que debe tener en cuenta los puntos siguientes:Setting up the proper credentials to run a job can be a little confusing, so keep the following points in mind:

  • Las credenciales de ámbito de base de datos se deben crear en la base de datos del trabajo.The database scoped credentials must be created in the Job database.
  • Todas las bases de datos de destino deben tener un inicio de sesión con permisos suficientes para que el trabajo se complete correctamente (jobuser en el siguiente diagrama).All target databases must have a login with sufficient permissions for the job to complete successfully (jobuser in the diagram below).
  • Las credenciales se pueden reutilizar en los trabajos y las contraseñas de las credenciales se cifran y protegen para los usuarios que tienen acceso de solo lectura a los objetos del trabajo.Credentials can be reused across jobs, and the credential passwords are encrypted and secured from users who have read-only access to job objects.

La siguiente imagen está diseñada para ayudar a comprender y configurar las credenciales del trabajo adecuadas.The following image is designed to assist in understanding and setting up the proper job credentials. Recuerde que debe crear el usuario en cada base de datos (todas las bases de datos de usuario de destino) en las que se debe ejecutar el trabajo.Remember to create the user in every database (all target user dbs) the job needs to run.

Credenciales de trabajos elásticos

Prácticas recomendadas de seguridadSecurity best practices

Algunas consideraciones sobre procedimientos recomendados para trabajar con trabajos elásticos:A few best practice considerations for working with Elastic Jobs:

  • Limitar el uso de las API a las personas de confianza.Limit usage of the APIs to trusted individuals.
  • Las credenciales deben tener los privilegios mínimos necesarios para realizar el paso de trabajo.Credentials should have the least privileges necessary to perform the job step. Para más información, consulte Autorización y permisos de SQL Server.For more information, see Authorization and Permissions SQL Server.
  • Cuando se utiliza un servidor o un miembro del grupo de destino, se recomienda crear una credencial independiente con derechos en la base de datos maestra para ver y enumerar las bases de datos, que se utiliza para expandir las listas de bases de datos de los servidores o grupos antes de la ejecución del trabajo.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.

Rendimiento, capacidad y limitaciones del agenteAgent performance, capacity, and limitations

Los trabajos elásticos utilizan recursos de proceso mínimos mientras se espera hasta que los trabajos de larga ejecución finalicen.Elastic Jobs use minimal compute resources while waiting for long-running jobs to complete.

Dependiendo del tamaño del grupo de destino de las bases de datos y el tiempo de ejecución deseado para un trabajo (número de trabajadores simultáneos), el agente requiere distintas cantidades de proceso y rendimiento de la base de datos de trabajos (cuantos más destinos y número de trabajos, mayor será la cantidad de proceso necesaria).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).

Actualmente, la versión preliminar está limitada a 100 trabajos simultáneos.Currently, the preview is limited to 100 concurrent jobs.

Evitar que los trabajos reduzcan el rendimiento de la base de datos de destinoPrevent jobs from reducing target database performance

Para asegurarse de que los recursos no están sobrecargados al ejecutar trabajos en las bases de datos de un grupo elástico de SQL, los trabajos se pueden configurar para limitar el número de bases de datos en las que puede ejecutarse un trabajo al mismo tiempo.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.

Establezca el número de bases de datos simultáneas que ejecuta un trabajo estableciendo el parámetro @max_parallelism del procedimiento almacenado sp_add_jobstep en T-SQL o Add-AzSqlElasticJobStep -MaxParallelism en 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.

Procedimientos recomendados para crear trabajosBest practices for creating jobs

Scripts idempotentesIdempotent scripts

Los scripts de T-SQL de un trabajo deben ser idempotentes.A job's T-SQL scripts must be idempotent. Idempotente significa que si el script se ejecuta correctamente y se vuelve a ejecutar, produce el mismo resultado.Idempotent means that if the script succeeds, and it is run again, the same result occurs. Un script puede producir errores debido a problemas de red transitorios.A script may fail due to transient network issues. En ese caso, el trabajo volverá a intentar ejecutar automáticamente el script un número de veces predefinido antes de desistir.In that case, the job will automatically retry running the script a preset number of times before desisting. Un script idempotente produce el mismo resultado aunque se ejecute correctamente dos veces (o más).An idempotent script has the same result even if its been successfully run twice (or more).

Una táctica sencilla es probar la existencia de un objeto antes de 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.

De forma similar, un script debe ser capaz de comprobar lógicamente y contrarrestar las condiciones que encuentre para ejecutarse correctamente.Similarly, a script must be able to execute successfully by logically testing for and countering any conditions it finds.

Pasos siguientesNext steps