sp_stop_job (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Indique à SQL Server Agent d’arrêter l’exécution d’un travail.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_stop_job
    [ [ @job_name = ] N'job_name' ]
    [ , [ @job_id = ] 'job_id' ]
    [ , [ @originating_server = ] N'originating_server' ]
    [ , [ @server_name = ] N'server_name' ]
[ ; ]

Arguments

[ @job_name = ] N’job_name'

Nom du travail à arrêter. @job_name est sysname, avec la valeur par défaut NULL.

[ @job_id = ] 'job_id'

Numéro d'identification du travail à arrêter. @job_id est uniqueidentifier, avec la valeur par défaut NULL.

[ @originating_server = ] N’originating_server'

Nom du serveur d’origine. Si ce nom est spécifié, tous les travaux multiserveurs sont arrêtés. @originating_server est sysname, avec la valeur par défaut NULL. Spécifiez ce paramètre uniquement lors de l’appel sp_stop_job sur un serveur cible.

La fonctionnalité Multi Server Administration istration (MSX/TSX) n’est pas prise en charge sur Azure SQL Managed Instance.

Remarque

Seul un des trois premiers paramètres peut être précisé.

[ @server_name = ] N’server_name'

Nom du serveur cible spécifique sur lequel sera arrêté un travail multiserveur. @server_name est sysname, avec la valeur par défaut NULL. Spécifiez ce paramètre uniquement lors de l’appel sp_stop_job sur un serveur d’origine pour un travail multiserveur.

Valeurs des codes de retour

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

Jeu de résultats

Aucune.

Notes

sp_stop_job envoie un signal d’arrêt à la base de données. Certains processus peuvent être arrêtés immédiatement et certains doivent atteindre un point stable (ou un point d’entrée au chemin du code) avant de pouvoir s’arrêter. Certaines instructions Transact-SQL longues telles que BACKUP, RESTOREet certaines DBCC commandes peuvent prendre beaucoup de temps. Lorsque ces commandes sont en cours d’exécution, cela peut prendre un certain temps avant l’annulation du travail. L'arrêt d'un travail provoque l'enregistrement d'une entrée « Travail annulé » dans l'historique des travaux.

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 forcé de se terminer 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 ne doit être utilisé que dans des circonstances extrêmes si le travail contient des étapes de type CmdExec ou PowerShell.

Cette procédure stockée partage le nom d’un sp_stop_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_stop_job (Travaux élastiques Azure) (Transact-SQL).

Autorisations

Cette procédure stockée appartient au rôle db_owner . Vous pouvez accorder EXECUTE des autorisations pour n’importe quel utilisateur, 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.

Les membres de SQLAgentUserRole et SQLAgentReaderRole ne peuvent arrêter que les travaux qu’ils possèdent. Les membres de SQLAgentOperatorRole peuvent arrêter tous les travaux locaux, y compris les travaux appartenant à 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