Partager via


sp_add_job (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

Crée un travail exécuté par le service SQL Server Agent.

Conventions de la syntaxe Transact-SQL

Important

Dans Azure SQL Managed Instance, la plupart, mais pas toutes les fonctionnalités SQL Server Agent sont actuellement prises en charge. Pour plus d’informations, consultez Différences T-SQL entre Azure SQL Managed Instance et SQL Server.

Syntaxe

sp_add_job
         [ @job_name = ] N'job_name'
     [ , [ @enabled = ] enabled ]
     [ , [ @description = ] N'description' ]
     [ , [ @start_step_id = ] step_id ]
     [ , [ @category_name = ] 'category' ]
     [ , [ @category_id = ] category_id ]
     [ , [ @owner_login_name = ] 'login' ]
     [ , [ @notify_level_eventlog = ] eventlog_level ]
     [ , [ @notify_level_email = ] email_level ]
     [ , [ @notify_level_netsend = ] netsend_level ]
     [ , [ @notify_level_page = ] page_level ]
     [ , [ @notify_email_operator_name = ] 'email_name' ]
     [ , [ @notify_netsend_operator_name = ] 'netsend_name' ]
     [ , [ @notify_page_operator_name = ] 'page_name' ]
     [ , [ @delete_level = ] delete_level ]
     [ , [ @job_id = ] job_id OUTPUT ]
[ ; ]

Arguments

@job_name

Nom du travail. Le nom doit être unique et ne peut pas contenir le caractère pourcentage (%). @job_name est nvarchar(128), sans valeur par défaut. Obligatoire.

@enabled

Indique l'état du travail ajouté. activé est tinyint, avec une valeur par défaut ( 1 activée). Si 0, le travail n’est pas activé et ne s’exécute pas selon sa planification ; toutefois, il peut être exécuté manuellement.

@description

Description du travail. @description est nvarchar(512), avec la valeur par défaut NULL. Si @description est omis, N'No description available' il est utilisé.

@start_step_id

Numéro d'identification de la première étape à exécuter pour le travail. @start_step_id est int, avec la valeur par défaut 1.

@category_name

Catégorie du travail. @category_name est sysname, avec la valeur par défaut NULL.

@category_id

Mécanisme qui ne tient pas compte de la langue définie et qui permet de spécifier une catégorie de travail. @category_id est int, avec la valeur par défaut NULL.

@owner_login_name

Nom du compte de connexion propriétaire du travail. @owner_login_name est sysname, avec une valeur par défaut NULL, qui est interprétée comme le nom de connexion actuel. Seuls les membres du rôle serveur fixe sysadmin peuvent définir ou modifier la valeur de @owner_login_name. Si les utilisateurs qui ne sont pas membres du jeu de rôles sysadmin ou modifient la valeur de @owner_login_name, l’exécution de cette procédure stockée échoue et une erreur est retournée.

@notify_level_eventlog

Valeur indiquant le moment auquel une entrée doit être ajoutée pour ce travail dans le journal des applications Microsoft Windows. @notify_level_eventlog est int et peut être l’une des valeurs suivantes :

Valeur Description
0 Jamais
1 Si succès
2 (valeur par défaut) Si échec
3 Toujours

@notify_level_email

Valeur indiquant à quel moment envoyer un message électronique une fois ce travail achevé. @notify_level_email est int, avec une valeur par défaut , 0qui indique jamais. @notify_level_email utilise les mêmes valeurs que @notify_level_eventlog.

@notify_level_netsend

Valeur indiquant à quel moment envoyer un message réseau une fois ce travail achevé. @notify_level_netsend est int, avec une valeur par défaut , 0qui indique jamais. @notify_level_netsend utilise les mêmes valeurs que @notify_level_eventlog.

@notify_level_page

Valeur indiquant à quel moment envoyer une page une fois ce travail achevé. @notify_level_page est int, avec une valeur par défaut de 0, qui indique jamais. @notify_level_page utilise les mêmes valeurs que @notify_level_eventlog.

@notify_email_operator_name

Nom du courrier électronique de la personne à laquelle envoyer un e-mail lorsque @notify_email_operator_name est atteint. @notify_email_operator_name est sysname, avec la valeur par défaut NULL.

@notify_netsend_operator_name

Nom de l'opérateur à qui le message réseau est envoyé une fois ce travail exécuté. @notify_netsend_operator_name est sysname, avec la valeur par défaut NULL.

@notify_page_operator_name

Nom de la personne à qui envoyer un message par radiomessagerie une fois ce travail exécuté. @notify_page_operator_name est sysname, avec la valeur par défaut NULL.

@delete_level

Valeur indiquant à quel moment supprimer le travail. delete_value est int, avec une valeur par défaut , 0ce qui signifie jamais. @delete_level utilise les mêmes valeurs que @notify_level_eventlog.

Remarque

Lorsque @delete_level est 3, le travail n’est exécuté qu’une seule fois, quelle que soit la planification définie pour le travail. De plus, si un travail est supprimé, son historique est également supprimé.

@job_id SORTIE

Numéro d'identification du travail affecté si le travail est correctement créé. @job_id est une variable de sortie de type uniqueidentifier, avec une valeur par défaut NULL.

Valeurs des codes de retour

0 (réussite) or 1 (échec).

Jeu de résultats

Aucune.

Notes

@originating_server existe dans sp_add_job, mais n’est pas répertorié sous Arguments. @originating_server est réservé à une utilisation interne.

Après sp_add_job avoir été exécuté pour ajouter un travail, sp_add_jobstep vous pouvez l’utiliser pour ajouter des étapes qui effectuent les activités du travail. sp_add_jobschedule peut être utilisé pour créer la planification utilisée par le service SQL Server Agent pour exécuter le travail.

Permet sp_add_jobserver de définir l’instance SQL Server où le travail s’exécute et sp_delete_jobserver de supprimer le travail de l’instance SQL Server. Si le travail s’exécute sur un ou plusieurs serveurs cibles dans un environnement multiserveur, utilisez sp_apply_job_to_targets pour définir les serveurs cibles ou les groupes de serveurs cibles pour le travail. Pour supprimer des travaux des serveurs cibles ou des groupes de serveurs cibles, utilisez sp_remove_job_from_targets. La fonctionnalité Administration multiserveur (MSX/TSX) n’est pas prise en charge sur Azure SQL Managed Instance.

SQL Server Management Studio offre un moyen simple et graphique de gérer les tâches, et est recommandé pour la création et la gestion de l'infrastructure de travail.

Cette procédure stockée partage le nom d’un sp_add_job objet similaire pour le service Travaux élastiques Azure pour Azure SQL Database. Pour plus d’informations sur la version des travaux élastiques, consultez jobs.sp_add_job (Travaux élastiques Azure).

autorisations

Vous pouvez accorder EXECUTE des autorisations sur cette procédure, mais ces autorisations peuvent être remplacées lors d’une mise à niveau de SQL Server.

D’autres utilisateurs doivent disposer de l’un des rôles de base de données fixes SQL Server Agent suivants dans la msdb base de données :

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Pour en savoir plus sur les autorisations de ces rôles, consultez Rôles de base de données fixes de l'Agent SQL Server.

Seuls les membres du rôle serveur fixe sysadmin peuvent définir ou modifier la valeur de @owner_login_name. Si les utilisateurs qui ne sont pas membres du jeu de rôles sysadmin ou modifient la valeur de @owner_login_name, l’exécution de cette procédure stockée échoue et une erreur est retournée.

Exemples

R. Ajouter un travail

Cet exemple ajoute un nouveau travail appelé NightlyBackups (sauvegardes de nuit).

USE msdb;
GO

EXEC dbo.sp_add_job @job_name = N'NightlyBackups';
GO

B. Ajouter un travail avec le pagineur, le courrier électronique et les informations d’envoi net

Dans l'exemple ci-dessous, un travail appelé Ad hoc Sales Data Backup avertit François Ajenstat (par radiomessagerie, messagerie électronique ou par message réseau) lorsqu'un travail échoue, et est supprimé une fois exécuté.

Remarque

Dans cet exemple, nous considérons qu'un opérateur nommé François Ajenstat avec une connexion appelée françoisa existe déjà.

USE msdb;
GO

EXEC dbo.sp_add_job
    @job_name = N'Ad hoc Sales Data Backup',
    @enabled = 1,
    @description = N'Ad hoc backup of sales data',
    @owner_login_name = N'françoisa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_level_netsend = 2,
    @notify_level_page = 2,
    @notify_email_operator_name = N'François Ajenstat',
    @notify_netsend_operator_name = N'François Ajenstat',
    @notify_page_operator_name = N'François Ajenstat',
    @delete_level = 1;
GO