sp_stop_job (Transact-SQL)
Demande à SQL Server Agent d'arrêter l'exécution d'un travail.
Syntaxe
sp_stop_job
[@job_name =] 'job_name'
| [@job_id =] job_id
| [@originating_server =] 'master_server'
| [@server_name =] 'target_server'
Arguments
[ @job_name =] 'job_name'
Nom du travail à arrêter. job_name est de type sysname, avec une valeur par défaut NULL.[ @job_id =] job_id
Numéro d'identification du travail à arrêter. job_id est de type uniqueidentifier, avec une valeur par défaut NULL.[ @originating_server =] 'master_server'
Nom du serveur maître. Si ce nom est spécifié, tous les travaux multiserveurs sont arrêtés. master_server est de type nvarchar(128), avec une valeur par défaut NULL. Spécifiez ce paramètre uniquement lorsque vous appelez sp_stop_job sur un serveur cible.[!REMARQUE]
Seul un des trois premiers paramètres peut être précisé.
[ @server_name =] 'target_server'
Nom du serveur cible spécifique sur lequel sera arrêté un travail multiserveur. target_server est de type nvarchar(128), avec NULL comme valeur par défaut. Spécifiez ce paramètre uniquement lorsque vous appelez sp_stop_job sur un serveur maître pour un travail multiserveurs.
Valeurs des codes de retour
0 (succès) ou 1 (échec)
Jeux de résultats
Aucun
Notes
Lorsque l'Agent SQL Server reçoit la notification d'arrêt, il attend la fin de l'étape de travail en cours d'exécution avant de traiter la demande d'annulation. Certaines instructions Transact-SQL de longue durée telles que BACKUP, RESTORE et certaines commandes DBCC peuvent prendre beaucoup de temps. Lorsque ces instructions et commandes s'exécutent, l'annulation du travail peut nécessiter quelque temps. L'arrêt d'un travail provoque l'enregistrement d'une entrée « Travail annulé » dans l'historique de travail.
Si un travail exécute actuellement une étape de type CmdExec ou PowerShell, le processus en cours d'exécution (par exemple, MyProgram.exe) est obligé de s'arrêter prématurément. La fin prématurée peut aboutir à un comportement imprévisible ; les fichiers que le processus utilise risquant, par exemple, d'être bloqués alors qu'ils sont ouverts. Par conséquent, sp_stop_job doit être utilisée uniquement dans des circonstances extrêmes si le travail contient des étapes de type CmdExec ou PowerShell.
Autorisations
Seuls les membres du rôle de serveur fixe sysadmin peuvent exécuter cette procédure stockée. Les autres utilisateurs doivent disposer de l'un des rôles de base de données fixes SQL Server Agent suivants dans la base de données msdb.
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.
Les membres des rôles SQLAgentUserRole et SQLAgentReaderRole peuvent interrompre uniquement les travaux dont ils sont propriétaires tandis que les membres de SQLAgentOperatorRole peuvent suspendre tous les travaux locaux, y compris ceux qui appartiennent à d'autres utilisateurs. Les membres de sysadmin peuvent arrêter tous les travaux locaux et multiserveurs.
Exemples
L'exemple suivant arrête un travail nommé Weekly Sales Data Backup.
USE msdb ;
GO
EXEC dbo.sp_stop_job
N'Weekly Sales Data Backup' ;
GO