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 :
Machine Linux avec les conditions préalables suivantes :
- Démarrage rapide : Installer SQL Server et créer une base de données sur Red Hat
- Démarrage rapide : Installer SQL Server et créer une base de données sur SUSE Linux Enterprise Server
- Démarrage rapide : installer SQL Server et créer une base de données sur Ubuntu avec des outils en ligne de commande.
Les conditions préalables suivantes sont facultatives :
- Machine Windows avec SSMS :
- Télécharger SQL Server Management Studio (SSMS) pour les étapes SSMS 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é.
Pour activer SQL Server Agent, procédez comme suit.
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
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.
Sur votre machine Linux, ouvrez une session du terminal Bash.
Utiliser sqlcmd pour exécuter les commandes Transact-SQL
CREATE DATABASE
./opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'CREATE DATABASE SampleDB'
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.
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
Appelez sp_add_jobstep pour créer une étape de tâche qui crée une sauvegarde de la base de données
SampleDB
.-- 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
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
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
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
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.
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.
Vérifiez que vous avez bien créé un exemple de base de données nommé
SampleDB
.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.
Créez une nouvelle tâche.
Donnez un nom à votre tâche et créez l’étape de votre tâche.
Spécifiez quel sous-système et quelle étape de la tâche utiliser.
Créez une nouvelle planification de tâches.
Démarrez votre tâche.
É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 :