Créer, configurer et gérer des travaux élastiques

S’applique à Azure SQL Database

Cet article décrit les étapes requises pour créer, configurer et gérer des tâches élastiques pour Azure SQL Database. Vous pouvez effectuer la plupart de ces étapes dans le portail Azure et à l'aide de T-SQL, PowerShell et de l'API REST. Les travaux élastique permettent l’exécution d’un ou plusieurs scripts Transact-SQL (T-SQL) en parallèle sur plusieurs bases de données. Pour plus d'informations, apprenez-en davantage sur les concepts d'automatisation des tâches dans Azure SQL Database ou lisez pour en savoir plus sur les tâches élastiques dans Azure SQL Database.

Créer et configurer des agents de tâches élastiques

  1. Créez ou identifiez une base de données Azure SQL de niveau S1 ou supérieur, en utilisant le modèle d'achat DTU. Cette base de données doit se trouver sur le même serveur que l'agent de tâche. Cette base de données est utilisée comme base de données de tâches lors de la création d'agents de tâches élastiques. Vous pouvez créer une base de données unique via le portail Azure, Azure CLI, Azure CLI (sql up) ou PowerShell.

  2. Créez un agent de tâches élastiques dans le portail Azure ou à l'aide de PowerShell.

    Les instructions pour créer un agent de tâche élastique dans le portail Azure sont les suivantes :

    1. Dans le portail Azure, recherchez les agents de tâche élastique. Sélectionnez Créer pour commencer l'approvisionnement d'une nouvelle ressource d'agent de tâche élastique. Vous pouvez également suivre ce lien pour créer un agent de tâche élastique dans le portail Azure.
    2. Fournissez un nom d'agent de tâche élastique.
    3. Choisissez un abonnement et un groupe de ressources pour l'agent. Si nécessaire, créez un nouveau groupe de ressources. Une tâche élastique peut cibler des bases de données dans d'autres groupes de ressources, abonnements, voire d'autres régions Azure.
    4. Choisissez le serveur logique Azure SQL Database comme serveur d'agent de tâche élastique.
    5. Choisissez une base de données de tâche dans le serveur logique comme base de données de l'agent de tâche élastique. Une certaine validation permet de s'assurer que la base de données est appropriée.
    6. Sous Niveau de service, choisissez JA 100.
    7. Sélectionnez Suivant : Identité.
    8. Il existe deux méthodes d'authentification pour l'agent de tâche pour cibler les serveurs/bases de données, l'authentification Microsoft Entra avec une identité managée affectée par l'utilisateur (UMI) ou des informations d'identification limitées à la base de données.
      1. Créez l'UMI en dehors du processus d'approvisionnement de l'agent de tâche élastique ou utilisez une UMI existante. Sélectionnez Ajouter une identité managée affectée par l'utilisateur. Sélectionnez l'UMI. Sélectionnez Ajouter.
      2. Pour utiliser des informations d'identification limitées à la base de données, reportez-vous aux étapes décrites plus loin dans ce tutoriel.
    9. Sélectionnez Suivant : balises.
    10. Envisagez d'utiliser les balises Azure. Par exemple, la balise « Owner » ou « CreatedBy » pour identifier qui a créé la ressource et la balise Environment pour identifier si cette ressource est en production, développement, etc. Pour plus d'informations, reportez-vous à Développer votre stratégie de nommage et d'étiquetage pour les ressources Azure.
    11. Sélectionnez Revoir + créer.
    12. Validez vos nouvelles sélections d'agent de tâche élastique dans la page Vérifier + créer, puis sélectionnez Créer.
    13. D'autres étapes sont nécessaires pour s'authentifier auprès des serveurs/bases de données cibles. Poursuivez les étapes décrites dans les sections suivantes de cet article du tutoriel.

Créer l'authentification de l'agent de tâche

L'agent de tâche élastique doit être en mesure de s'authentifier auprès de chaque serveur ou base de données cible. Dans cette section, nous abordons les étapes nécessaires pour que l'agent de tâche élastique s'authentifie auprès du ou des serveurs/bases de données dans les groupes cibles.

Il existe deux options d'authentification d'un agent de tâche élastique sur les cibles :

Utilisez l'authentification Microsoft Entra avec une identité managée affectée par l'utilisateur (UMI)

Utilisez l'authentification Microsoft Entra (anciennement Azure Active Directory) avec une identité managée affectée par l'utilisateur (UMI). Il s’agit de la méthode d’authentification recommandée.

  1. Activez l'authentification Microsoft Entra (anciennement Azure Active Directory) sur tous les serveurs logiques/bases de données cibles de la tâche et sur le serveur logique de sortie de tâche.
  2. Créez une identité managée affectée par l'utilisateur (UMI) ou utilisez une UMI existante.
  3. Affectez l'UMI à l'agent de tâche élastique créée.
    • Il est recommandé d'affecter une UMI lors de la création de l'agent de tâche élastique. Reportez-vous aux étapes décrites dans Création et configuration de l'agent de tâche élastique. Lors de la création d'un agent de tâche dans le portail Azure, sous l'onglet Identité, affectez à l'agent de tâche élastique.
    • Pour mettre à jour un agent de tâche élastique existant afin d'utiliser une UMI, dans la page Portail Azure de l'agent de tâche élastique, accédez à Identité sous le menu Sécurité dans le menu de ressources. Sélectionnez et affectez l'UMI à l'agent de tâche élastique.
    • Lors de la création ou de la mise à jour d’un agent de tâche élastique avec les cmdlets PowerShell New-AzSqlElasticJobAgent ou Set-AzSqlElasticJobAgent, utilisez les paramètres suivants : -IdentityType UserAssigned -IdentityID <identity resource path>. Par exemple :
      $parameters = @{
          Name = '<job agent name>'
          ResourceGroupName = '<Resource_Group_Name>'
          IdentityType = 'UserAssigned'
          IdentityID = '/subscriptions/fa58cf66-caaf-4ba9-875d-f1234/resourceGroups/<resource group name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UMI name here>'
      }
      Set-AzSqlElasticJobAgent @parameters
      
    • L'API REST peut également être utilisée pour créer ou mettre à jour l'agent de tâche élastique.
  4. Créez un groupe cible et ajoutez des cibles pour les tâches. Définissez le groupe cible et les cibles (les bases de données sur lesquelles vous souhaitez exécuter la tâche) à l'aide de PowerShell ou définissez le groupe cible et les cibles à l'aide de T-SQL.
  5. Dans chacun des serveurs/bases de données cibles, créez un utilisateur autonome mappé aux informations d’identification UMI ou délimitées à la base de données, en utilisant T-SQL ou de PowerShell :
    1. Créez l'authentification de la tâche avec T-SQL.
    2. Créez l’authentification de la tâche avec PowerShell.
  6. Dans la base de données de sortie, créez et attribuez des autorisations à l'utilisateur de la tâche UMI. Connectez-vous à la base de données de sortie et exécutez l'exemple de script suivant pour un utilisateur nommé jobuserUMI :
    CREATE USER [jobuserUMI] FROM EXTERNAL PROVIDER; 
    GO 
    
  7. Si les paramètres de sortie sont spécifiés dans l’appel sp_add_jobstep dans the @output_table_name argument, les informations d’identification limitées à la base de données ou l’UMI de l’agent de tâche doivent recevoir des autorisations de type CREATE TABLE (création de table) et INSERT (insertion de données) dans cette table de sortie.
    GRANT CREATE TABLE TO [job_user];
    GRANT SELECT,INSERT,UPDATE,DELETE ON [dbo].[output_table_name] TO job_user;
    
  8. Dans chacun des serveurs/bases de données cibles, accordez à l'utilisateur de la base de données les autorisations nécessaires pour exécuter des scripts de la tâche. Ces autorisations varient selon les exigences de la requête T-SQL.

Utiliser des informations d'identification limitées à la base de données

Vous pouvez utiliser des informations d'identification limitées à la base de données dans la base de données de la tâche et dans chaque serveur/base de données cible pour l'authentification. Précédemment, les informations d'identification limitées à la base de données étaient la seule option disponible avec des tâches élastiques.

Remarque

Si une UMI est affectée à l'agent de tâche, l'authentification SQL ne sera pas utilisée pour se connecter à ses cibles. L'agent de tâche utilise uniquement l'authentification Microsoft Entra avec l'UMI pour se connecter à toutes ses bases de données cibles.

  1. Créez des informations d'identification limitées à la base de données dans la base de données de tâches.
    1. Utiliser PowerShell pour créer des informations d'identification limitées à la base de données
    2. Utilisez T-SQL pour créer des informations d'identification limitées à la base de données.
  2. Définissez le groupe cible (les bases de données sur lesquelles vous souhaitez exécuter la tâche) à l'aide de PowerShell ou définissez les cibles à l'aide de T-SQL.
  3. Créez une connexion/un utilisateur de l'agent de la tâche dans chaque base de données cible dans laquelle la tâche s'exécutera. La connexion/l'utilisateur sur chaque serveur/base de données cible doit avoir le même nom que l'identité des informations d'identification limitées à la base de données pour l'utilisateur de la tâche et le même mot de passe que les informations d'identification limitées à la base de données pour l'utilisateur de la tâche.
    1. Utilisez PowerShell pour ajouter les informations d'identification et l'utilisateur à chaque base de données cible.
    2. Pour plus d'informations sur l'ajout d'utilisateurs, reportez-vous à Autoriser l'accès au serveur et à la base de données à l'aide de connexions et de comptes d'utilisateur.
  4. Dans la base de données de sortie, créez et attribuez des autorisations à l'utilisateur de la tâche.
    1. Connectez-vous à la base de données master du serveur logique qui héberge la base de données de sortie. S'il n'en existe pas encore, créez une connexion authentifiée SQL avec le même nom que l'identité des informations d'identification limitées à la base de données pour l'utilisateur de la tâche et le même mot de passe que les informations d'identification limitées à la base de données pour l'utilisateur de la tâche.
      CREATE LOGIN [job_user] WITH PASSWORD '<same_password_as_database-scoped_credential>'
      GO 
      
    2. Connectez-vous à la base de données de sortie et exécutez l'exemple de script suivant pour un utilisateur nommé job_user :
      CREATE USER [job_user] FROM LOGIN [job_user]; 
      GO 
      
    3. Si les paramètres de sortie sont spécifiés dans l’appel sp_add_jobstep dans l’argument @output_table_name, les informations d’identification limitées à la base de données ou l’UMI de l’agent de tâche doivent recevoir des autorisations de type CREATE TABLE (création de table) et INSERT (insertion de données) dans cette table de sortie.
      GRANT CREATE TABLE TO [job_user];
      GRANT SELECT,INSERT,UPDATE,DELETE ON [dbo].[output_table_name] TO job_user;
      
  5. Dans chacun des serveurs/bases de données cibles, accordez à l'utilisateur de la base de données les autorisations nécessaires pour exécuter des scripts de la tâche. Ces autorisations varient selon les exigences de la requête T-SQL.

Créer, exécuter et gérer des travaux

  1. Utilisez PowerShell pour créer une tâche ou utiliser T-SQL pour créer une tâche.
  2. Ajoutez des étapes à chaque tâche élastique. Un groupe cible doit être choisi pour chaque étape de la tâche. Utilisez PowerShell pour ajouter des étapes de tâche ou utilisez T-SQL pour ajouter des étapes de tâche.
  3. Utilisez PowerShell pour exécuter une tâche ou utilisez T-SQL pour exécuter une tâche.
  4. Surveillez l'état d'exécution des tâches à l'aide du portail Azure, surveillez les tâches à l'aide de PowerShell ou surveillez les tâches à l'aide de T-SQL.

Configurer un point de terminaison privé de tâches élastiques Azure SQL

Chaque serveur cible peut être atteint via un point de terminaison privé géré par le service, créé et géré par Microsoft, et exclusivement pour une utilisation avec des tâches élastiques. La création d'un point de terminaison privé de tâches élastiques établit une liaison privée entre la tâche élastique et le serveur cible. Une fois configurées, toutes les communications entre l'agent de tâche élastique et le serveur cible se font via le point de terminaison privé.

La configuration est facile. Vous devez créer un point de terminaison privé pour chaque serveur cible souhaité et pour le serveur de sortie de tâche pour activer cette communication.

  1. Dans le menu de navigation de l'agent de tâche élastique, sous Sécurité, sélectionnez Points de terminaison privés.
  2. Sélectionnez Ajouter un serveur et créer un point de terminaison privé.
  3. La fenêtre Créer un point de terminaison privé s'ouvre alors.
    1. Vous pouvez sélectionner un serveur cible à partir de n'importe quel abonnement, n'importe où dans Azure.
    2. Sélectionnez un serveur logique Azure SQL Database cible dans cet abonnement.
    3. Fournissez un nom de point de terminaison privé.
  4. Sélectionnez Créer un point de terminaison privé. Le déploiement prend quelques instants. Bientôt, l'état de la connexion sur la page points de terminaison privés s'affiche et est en attente.
  5. Dans le portail Azure, accédez au serveur logique d'Azure SQL Database cible.
  6. En tant qu'administrateur de ce serveur logique Azure SQL Database cible, dans le menu de navigation du serveur SQL, sous Sécurité, sélectionnez Mise en réseau.
  7. Sélectionnez Accès privé.
  8. Approuvez la requête du point de terminaison privé en attente.
  9. L'état de la connexion sur la page Points de terminaison privés et est Approuvé. À présent, toute communication entre l'agent de la tâche et toutes les bases de données ou pools élastiques dans ce serveur logique Azure SQL Database cible passent par le point de terminaison privé managé par le service.
  10. En tant qu'administrateur de ce serveur logique Azure SQL Database cible, dans le menu de navigation du serveur SQL, sous Sécurité, sélectionnez Mise en réseau. Il n'est pas nécessaire d'activer l'accès public à des fins de tâches élastiques.

Configurer des alertes d'agent de la tâche avec Azure Monitor

Configurez les alertes Azure Monitor sur la ressource de l'agent de tâche élastique pour être avertie de l'état d'exécution de la tâche. Par exemple, vous pouvez être informé de l'échec/de la réussite d'une tâche via des groupes d'actions configurés par l'utilisateur.

Vous pouvez créer des alertes d'agent de tâche élastique à l'aide du portail Azure, de PowerShell ou de l'API REST.

Créer des alertes d'agent de la tâche à l'aide du portail Azure

Créez des règles d'alerte Azure Monitor avec le portail Azure, Azure CLI, PowerShell et l'API REST. Les règles d'alerte pour les tâches élastiques fonctionnent de la même façon qu'avec d'autres règles d'alerte, comme pour Azure SQL Database.

Pour continuer avec le portail Azure :

  1. Dans le menu des ressources du portail Azure pour l'agent de la tâche élastique, accédez au menu Surveillance et sélectionnez Alertes.
  2. Sous les Configurer les règles d'alerte de cette invite de ressources, sélectionnez Créer une règle d'alerte.
  3. Dans la page Créer une règle d'alerte, la page Sélectionner un signal s'ouvre. Sélectionnez les métriques de tâches élastiques Échec des exécutions de tâches élastiques, Exécutions de tâches élastiques réussies ou Exécutions de tâches élastiques expirées. Capture d'écran du portail Azure montrant la page Créer une règle d'alerte.
  4. Sous Logique d'alerte, laissez seuil, Type d'agrégation, Opérateur et unité sur la valeur par défaut.
  5. Définissez la valeur de Seuil sur 0. Laissez les autres paramètres par défaut.
  6. Sélectionnez Suivant : Actions.
  7. Sélectionnez Créer un groupe d'action ou choisissez un groupe d'action existant.
    1. Créez des groupes d'actions d'alerte Azure Monitor dans le portail Azure pour définir les paramètres de notification, par exemple, pour envoyer un e-mail de notification de l'échec aux administrateurs ou aux développeurs.
    2. Tester le groupe d'actions d'alerte.
  8. Sélectionnez Suivant : Détails.
  9. Fournissez un abonnement et un groupe de ressources en tant que détails de la tâche.
  10. Fournissez les détails de la règle d'alerte pour la communication d'alertes. Fournissez un nom de règle d'alerte.
  11. Sélectionnez Balises et fournissez des métadonnées, notamment CreatedBy ou Environment pour cette alerte.
  12. Sélectionnez Vérifier + créer. Sélectionnez Créer. L'affichage de la règle d'alerte dans le portail Azure peut prendre quelques minutes.
  13. Créez, si vous le souhaitez, des règles de traitement des alertes Azure Monitor à l'aide des portail Azure, d'Azure CLI ou de PowerShell. Utilisez des règles de traitement des alertes pour déterminer ce qu'il se passe lorsqu'une alerte est déclenchée, comme la suppression de notifications ou l'application d'actions spécifiques à certains types d'alertes.

Mettre à l'échelle l'agent de la tâche

Par défaut, les agents de la tâche sont créés sur JA100, ce qui permet de faire jusqu'à 100 exécutions de tâches élastiques simultanément. Le lancement d'une modification de niveau de service est une opération asynchrone et le nouveau niveau de service sera mis à disposition après un délai d'approvisionnement bref.

Si vous avez besoin de plus de 100 exécutions simultanées d'agents de tâche élastiques, des niveaux de service plus élevés sont disponibles. Reportez-vous à Niveaux de capacité de simultanéité. Pour le moment, vous pouvez modifier le niveau de service d'un agent de la tâche via le portail Azure, PowerShell, ou l'API REST.

Le dépassement du niveau de service avec les tâches simultanées crée des retards de mise en file d'attente avant que les tâches ne démarrent au-delà de la limite de tâches simultanées du niveau de service.

Mettre à l'échelle l'agent de tâche élastique à l'aide du portail Azure

  1. Accédez à la page de l'agent de la tâche élastique dans le portail Azure.
  2. Sélectionnez Niveau tarifaire ou effectuez un scale-up/down dans le menu contextuel.
  3. Choisissez un nouveau niveau de service dans la liste déroulante du niveau de service.
  4. Passez en revue la carte de coût.
  5. Sélectionnez Mettre à jour.

Mettre à l'échelle l'agent de tâche élastique à l'aide de PowerShell

Le paramètre facultatif -ServiceObjective pour Set-AzSqlElasticJobAgent peut être utilisé pour spécifier un nouvel objectif de service. Par exemple :

$parameters = @{
    Name = '<job agent name>'
    ResourceGroupName = '<Resource_Group_Name>'
    ServiceObjective = 'JA200'
}
Set-AzSqlElasticJobAgent @parameters

Mettre à l'échelle l'agent de tâche élastique à l'aide de l'API REST

Vous pouvez utiliser l'API REST de l'agent de tâche pour mettre à l'échelle un agent de tâche. Par exemple :

{ 
"id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/group1/providers/Microsoft.Sql/servers/server1/jobAgents/agent1", 
"name": "agent1", 
"type": "Microsoft.Sql/servers/jobAgents", 
"location": "southeastasia", 
"sku": {
"name": "JA100  ", 
"capacity": 100 
}, 
"properties": {  
"databaseId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/group1/providers/Microsoft.Sql/servers/server1/databases/db1"
}  
}