Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Créer un travail d'agent SQL Server à l'aide de T-SQL

L'Agent SQL Server est un service Microsoft Windows qui exécute des tâches administratives planifiées, appelées tâches. dans SQL Server.

T-SQL inclut une grande collection de procédures stockées qui traitent des travaux de l'Agent SQL Server.

Ici, nous en utiliserons certains pour créer et planifier une tâche de l'Agent SQL Server.

Vous pouvez également créer des travaux de l'Agent SQL Server via l'interface graphique (dans SSMS) si vous préférez.

Activer les XP d'agent

Si c'est la première fois que vous créez une tâche de l'Agent SQL Server sur votre instance SQL Server, vous devrez probablement activer les procédures stockées étendues de l'Agent SQL Server (Agent XP).

Voici comment le faire en utilisant T-SQL, et voici comment le faire en utilisant l'interface graphique SSMS.

Une fois que vous avez fait cela, vous pouvez continuer et créer un travail SQL Server Agent comme celui ci-dessous.

Exemple

Voici un exemple du code utilisé pour créer et planifier une tâche de l'Agent SQL Server.

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'BackupPetHotelDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupPetHotelDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [PetHotel] TO DISK = N''C:\Backups\PetHotel.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupPetHotelDB';  
GO

Ici, nous utilisons cinq procédures stockées pour créer et planifier le travail. La plupart de ces procédures acceptent beaucoup plus d'arguments (facultatifs) que ce que j'ai utilisé dans cet exemple. Pour une liste complète des arguments disponibles pour chaque procédure, consultez les liens dans le tableau ci-dessous.

Ces procédures stockées sont dans le msdb base de données, et vous pouvez voir que nous avons défini msdb comme base de données actuelle avant de les exécuter. Alternativement, vous pouvez les qualifier avec le nom de la base de données (par exemple msdb.dbo.sp_add_job... , etc.)

Le tableau suivant fournit un aperçu rapide de chaque procédure.

Procédure stockée Description
sp_add_job Ajoute une nouvelle tâche exécutée par le service SQL Agent.

Consultez le site Web de Microsoft pour plus d'informations.
sp_add_jobstep Ajoute une étape qui exécute l'opération réelle pour le travail qui a été ajouté avec sp_add_job .

Dans l'exemple ci-dessus, nous ajoutons une étape pour sauvegarder une base de données. Nous spécifions cela en fournissant une commande T-SQL.

Le @retry_interval est en minutes.

Consultez le site Web de Microsoft pour plus d'informations.
sp_add_schedule Crée une planification qui peut être utilisée par n'importe quel nombre de tâches.

Dans ce cas, nous avons donné @freq_type une valeur de 4 qui est quotidien. Nous avons également donné @freq_interval une valeur de 4 , qui est également quotidien.

L'heure est basée sur une horloge de 24 heures et est saisie sous la forme HHMMSS. Notre exemple utilise 041000 , qui est 04:10:00.

Voir le lien Microsoft ci-dessous pour les différentes options disponibles lors du réglage de la fréquence.

Consultez le site Web de Microsoft pour plus d'informations.
sp_attach_schedule Définit une planification pour une tâche. Ici, nous attachons le calendrier que nous avons ajouté avec sp_add_schedule au travail que nous avons ajouté avec sp_add_job .

Notez que la planification et la tâche doivent avoir le même propriétaire.

En outre, une planification peut être définie pour plusieurs tâches et une tâche peut être exécutée sur plusieurs planifications.

Consultez le site Web de Microsoft pour plus d'informations.
sp_add_jobserver Cible le travail spécifié sur le serveur spécifié. Cela accepte également un @server_name argument pour spécifier le serveur.

La valeur par défaut est (LOCAL) pour la machine locale. Dans notre exemple, nous avons utilisé la machine locale et nous avons donc pu omettre cet argument.

Consultez le site Web de Microsoft pour plus d'informations.

Afficher le travail

Vous pouvez utiliser le sp_help_job procédure stockée dans msdb base de données pour afficher les travaux de l'Agent SQL Server qui ont été créés sur le serveur.

EXEC sp_help_job;

Voici à quoi cela ressemble sur ma machine de test :

Dans ce cas, il y a trois emplois.

Vous pouvez également voir les travaux dans l'Explorateur d'objets lorsque vous avez le SQL Server Agent> Jobs nœud développé.

Le sp_help_job procédure stockée vous permet de fournir le nom ou l'ID d'un travail afin d'obtenir des informations plus détaillées sur ce travail.

Exemple :

EXEC sp_help_job @job_name= 'BackupPetHotelDB';

Résultat :

Les résultats sont séparés en détails de la tâche principale, les étapes de la tâche, les planifications de la tâche et les serveurs cibles de la tâche. Cela reflète à peu près les procédures stockées que nous avons exécutées lorsque nous avons créé la tâche.

Consultez la documentation Microsoft pour sp_help_job pour plus d'informations, ainsi qu'une liste d'autres arguments que vous pouvez fournir.

Tester la tâche

Vous pouvez utiliser le sp_start_job procédure stockée pour tester l'exécution de votre travail. Cette procédure accepte le nom ou l'ID de la tâche et exécutera la tâche dès que vous exécuterez la procédure.

Voir Comment exécuter une tâche de l'Agent SQL Server à l'aide de T-SQL pour un exemple.