Créer et exécuter des tâches SQL Server Agent sur Linux

S’applique à : SQL Server - Linux

Les tâches SQL Server sont utilisées pour effectuer régulièrement la même séquence de commandes dans votre base de données SQL Server. Ce didacticiel fournit un exemple de création d’une tâche SQL Server Agent sur Linux à l’aide de Transact-SQL et SQL Server Management Studio (SSMS).

  • Installer SQL Server Agent sur Linux
  • Créer une nouvelle tâche pour effectuer des sauvegardes de données quotidiennes
  • Planifier et exécuter la tâche
  • Effectuer les mêmes étapes dans SSMS (facultatif)

Pour les problèmes connus avec SQL Server Agent sur Linux, consultez les Notes de publication de SQL Server 2017 sur Linux.

Prérequis

Pour exécuter ce didacticiel, vous devez réunir les conditions préalables suivantes :

Les conditions préalables suivantes sont facultatives :

Activer SQL Server Agent

Pour utiliser SQL Server Agent sur Linux, vous devez avant tout activer SQL Server Agent sur une machine avec SQL Server déjà installé.

  1. Pour activer SQL Server Agent, procédez comme suit.

    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
    
  2. Redémarrez SQL Server avec la commande suivante :

    sudo systemctl restart mssql-server
    

Remarque

À compter de SQL Server 2017 (14.x) CU 4, SQL Server Agent est inclus avec le package mssql-server et est désactivé par défaut. Pour la configuration de l’Agent avant CU 4, consultez Installer SQL Server Agent sur Linux.

Créer un exemple de base de données

Procédez comme suit pour créer une base de données d'exemple nommée SampleDB. Cette base de données est utilisée pour la tâche de sauvegarde quotidienne.

  1. Sur votre machine Linux, ouvrez une session du terminal Bash.

  2. Utiliser sqlcmd pour exécuter les commandes Transact-SQL CREATE DATABASE.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'CREATE DATABASE SampleDB'
    
  3. Vérifiez la création de la base de données en répertoriant les bases de données sur votre serveur.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'SELECT Name FROM sys.Databases'
    

Créer une tâche avec Transact-SQL

Les tâches suivantes permettent de créer une tâche SQL Server Agent sur Linux avec les commandes Transact-SQL. La tâche exécute une sauvegarde quotidienne de l’échantillon de base de données, SampleDB.

Conseil

Vous pouvez utiliser tout client T-SQL pour exécuter ces commandes. Par exemple, sur Linux, vous pouvez utiliser installer les outils en ligne de commande SQL Server sqlcmd et bcp sur Linux ou l’extension SQL Server pour Visual Studio Code. À partir de Windows Server distant, vous pouvez également exécuter des requêtes dans SQL Server Management Studio (SSMS) ou utiliser l’interface IU pour la gestion des tâches, décrite dans la section suivante.

  1. Utilisez sp_add_job pour créer une tâche nommée Daily SampleDB Backup.

    -- Adds a new job executed by the SQLServerAgent service
    -- called 'Daily SampleDB Backup'
    USE msdb;
    GO
    EXEC dbo.sp_add_job
       @job_name = N'Daily SampleDB Backup';
    GO
    
  2. Appelez sp_add_jobstep pour créer une étape de tâche qui crée une sauvegarde de la base de donnéesSampleDB.

    -- Adds a step (operation) to the job
    EXEC sp_add_jobstep
       @job_name = N'Daily SampleDB Backup',
       @step_name = N'Backup database',
       @subsystem = N'TSQL',
       @command = N'BACKUP DATABASE SampleDB TO DISK = \
          N''/var/opt/mssql/data/SampleDB.bak'' WITH NOFORMAT, NOINIT, \
          NAME = ''SampleDB-full'', SKIP, NOREWIND, NOUNLOAD, STATS = 10',
       @retry_attempts = 5,
       @retry_interval = 5;
    GO
    
  3. Créez ensuite une planification quotidienne pour votre tâche avec sp_add_schedule.

    -- Creates a schedule called 'Daily'
    EXEC dbo.sp_add_schedule
       @schedule_name = N'Daily SampleDB',
       @freq_type = 4,
       @freq_interval = 1,
       @active_start_time = 233000;
    USE msdb;
    GO
    
  4. Joignez la planification des tâches à la tâche avec sp_attach_schedule.

    -- Sets the 'Daily' schedule to the 'Daily SampleDB Backup' Job
    EXEC sp_attach_schedule
       @job_name = N'Daily SampleDB Backup',
       @schedule_name = N'Daily SampleDB';
    GO
    
  5. Utilisez sp_add_jobserver pour attribuer la tâche à un serveur cible. Dans cet exemple, la cible est le serveur local.

    EXEC dbo.sp_add_jobserver
       @job_name = N'Daily SampleDB Backup',
       @server_name = N'(local)';
    GO
    
  6. Démarrez la tâche par sp_start_job.

    EXEC dbo.sp_start_job N' Daily SampleDB Backup' ;
    GO
    

Créer une tâche avec SSMS

Vous pouvez également créer et gérer des tâches à distance à l’aide de SQL Server Management Studio (SSMS) sur Windows.

  1. Démarrez SSMS sur Windows et connectez-vous à votre instance Linux. Pour plus d’informations, consultez Utiliser SQL Server Management Studio sur Windows pour la gestion de SQL Server sur Linux.

  2. Vérifiez que vous avez bien créé un exemple de base de données nommé SampleDB.

    Créer une base de données SampleDB
  3. Vérifiez que SQL Agent a installé SQL Server Agent sur Linux et configuré correctement. Recherchez le signe plus à côté de SQL Server Agent dans l’Explorateur d'objets. Si SQL Server Agent n’est pas activé, essayez de redémarrer le service mssql-server sur Linux.

    Capture d’écran montrant comment vérifier que SQL Server Agent a été installé.

  4. Créez une nouvelle tâche.

    Capture d’écran montrant comment créer un nouveau projet.

  5. Donnez un nom à votre tâche et créez l’étape de votre tâche.

    Capture d’écran montrant comment créer une étape de travail.

  6. Spécifiez quel sous-système et quelle étape de la tâche utiliser.

    Capture d’écran montrant le sous-système de travail.

    Capture d’écran montrant l’action d’étape du travail.

  7. Créez une nouvelle planification de tâches.

    Capture d’écran de la boîte de dialogue Nouvelle tâche, avec l’option Planifications et l’option Nouveau mises en évidence.

    Capture d’écran de la boîte de dialogue Nouvelle tâche, avec l’option OK mise en évidence.

  8. Démarrez votre tâche.

    Capture d’écran montrant comment démarrer le travail SQL Server Agent.

Étape suivante

Dans ce didacticiel, vous avez appris à :

  • Installer SQL Server Agent sur Linux
  • utiliser Transact-SQL et les procédures stockées système pour créer des tâches
  • créer une tâche qui exécute des sauvegardes de données quotidiennes
  • utiliser l’IU SSMS pour créer et gérer des tâches

Par la suite, explorez d’autres fonctionnalités pour créer et gérer des tâches :