Partage via


sp_update_jobstep (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

Modifie le paramètre d’une étape d’un travail utilisé pour effectuer des activités automatisées dans le service SQL Server Agent.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_update_jobstep
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    , [ @step_id = ] step_id
    [ , [ @step_name = ] N'step_name' ]
    [ , [ @subsystem = ] N'subsystem' ]
    [ , [ @command = ] N'command' ]
    [ , [ @additional_parameters = ] N'additional_parameters' ]
    [ , [ @cmdexec_success_code = ] cmdexec_success_code ]
    [ , [ @on_success_action = ] on_success_action ]
    [ , [ @on_success_step_id = ] on_success_step_id ]
    [ , [ @on_fail_action = ] on_fail_action ]
    [ , [ @on_fail_step_id = ] on_fail_step_id ]
    [ , [ @server = ] N'server' ]
    [ , [ @database_name = ] N'database_name' ]
    [ , [ @database_user_name = ] N'database_user_name' ]
    [ , [ @retry_attempts = ] retry_attempts ]
    [ , [ @retry_interval = ] retry_interval ]
    [ , [ @os_run_priority = ] os_run_priority ]
    [ , [ @output_file_name = ] N'output_file_name' ]
    [ , [ @flags = ] flags ]
    [ , [ @proxy_id = ] proxy_id ]
    [ , [ @proxy_name = ] N'proxy_name' ]
[ ; ]

Arguments

[ @job_id = ] 'job_id'

Numéro d'identification du travail auquel l'étape appartient. @job_id est uniqueidentifier, avec la valeur par défaut NULL.

Vous devez spécifier @job_id ou @job_name , mais les deux ne peuvent pas être spécifiées.

[ @job_name = ] N’job_name'

Nom du travail auquel l'étape appartient. @job_name est sysname, avec la valeur par défaut NULL.

Vous devez spécifier @job_id ou @job_name , mais les deux ne peuvent pas être spécifiées.

[ @step_id = ] step_id

Numéro d'identification de l'étape d'un travail à modifier. @step_id est int, sans valeur par défaut. Ce nombre ne peut pas être modifié.

[ @step_name = ] N’step_name'

Nouveau nom de l’étape. @step_name est sysname, avec la valeur par défaut NULL.

[ @subsystem = ] N’sous-système'

Sous-système utilisé par SQL Server Agent pour exécuter @command. @subsystem est nvarchar(40), avec la valeur par défaut NULL.

[ @command = ] N’command'

Commandes à exécuter via @subsystem. @command est nvarchar(max), avec la valeur par défaut NULL.

[ @additional_parameters = ] N’additional_parameters'

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @cmdexec_success_code = ] cmdexec_success_code

Valeur retournée par une commande de sous-système CmdExec pour indiquer que la commande a été exécutée avec succès. @cmdexec_success_code est int, avec la valeur par défaut NULL.

[ @on_success_action = ] on_success_action

Action à effectuer si l'étape est exécutée correctement. @on_success_action est tinyint, avec une valeur par défaut NULL, et peut être l’une de ces valeurs.

Valeur Description (action)
1 Quitter avec succès
2 Quitter en cas d’échec
3 Passez à l'étape suivante
4 Passer à l’étape @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

Numéro d’identification de l’étape de ce travail à exécuter si l’étape réussit et @on_success_action est 4. @on_success_step_id est int, avec la valeur par défaut NULL.

[ @on_fail_action = ] on_fail_action

Action à effectuer si l’étape échoue. @on_fail_action est tinyint et peut avoir l’une de ces valeurs.

Valeur Description (action)
1 Quitter avec succès
2 Quitter en cas d’échec
3 Passez à l'étape suivante
4 Accéder à l’étape @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

Numéro d’identification de l’étape de ce travail à exécuter si l’étape échoue et @on_fail_action est 4. @on_fail_step_id est int, avec la valeur par défaut NULL.

[ @server = ] N’server'

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @database_name = ] N’database_name'

Nom de la base de données dans laquelle exécuter une étape Transact-SQL. @database_name est sysname, avec la valeur par défaut NULL. Les noms placés entre crochets ([]) ne sont pas autorisés.

[ @database_user_name = ] N’database_user_name'

Nom de l’utilisateur de base de données à utiliser lors de l’exécution d’une étape Transact-SQL. @database_user_name est sysname, avec la valeur par défaut NULL.

[ @retry_attempts = ] retry_attempts

Nombre de tentatives à effectuer si l'étape échoue. @retry_attempts est int, avec la valeur par défaut NULL.

[ @retry_interval = ] retry_interval

Nombre de minutes s'écoulant entre chaque tentative de reprise. @retry_interval est int, avec la valeur par défaut NULL.

[ @os_run_priority = ] os_run_priority

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @output_file_name = ] N’output_file_name'

Nom du fichier dans lequel est enregistré le résultat de l'étape. @output_file_name est nvarchar(200), avec la valeur par défaut NULL. Ce paramètre est valide uniquement avec les commandes exécutées dans les sous-systèmes Transact-SQL ou CmdExec .

Pour revenir NULLà @output_file_name, vous devez définir @output_file_name sur une chaîne vide ou sur une chaîne de caractères vides, mais vous ne pouvez pas utiliser la CHAR(32) fonction.

Vous pouvez par exemple définir cet argument avec une chaîne vide comme suit :

@output_file_name = ' '

[ @flags = ] indicateurs

Option qui contrôle le comportement. @flags est int, avec la valeur par défaut NULL.

Valeur Description
0 (valeur par défaut) Écrasement du fichier de sortie
2 Ajout au fichier de sortie
4 Écriture de la sortie de l'étape d'un travail Transact-SQL dans l'historique des étapes.
8 Écriture du journal dans la table (remplace l'historique existant)
16 Écriture du journal dans la table (s'ajoute à l'historique existant)

[ @proxy_id = ] proxy_id

Numéro d'identification du proxy sous lequel s'exécute l'étape de travail. @proxy_id est int, avec la valeur par défaut NULL. Si aucune @proxy_id n’est spécifiée, aucune @proxy_name n’est spécifiée et aucune @database_user_name n’est spécifiée, l’étape de travail s’exécute en tant que compte de service pour SQL Server Agent.

[ @proxy_name = ] N’proxy_name'

Nom du proxy sous lequel s'exécute l'étape de travail. @proxy_name est sysname, avec la valeur par défaut NULL. Si aucune @proxy_id n’est spécifiée, aucune @proxy_name n’est spécifiée et aucune @database_user_name n’est spécifiée, l’étape de travail s’exécute en tant que compte de service pour SQL Server Agent.

Valeurs des codes de retour

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

Notes

sp_update_jobstep doit être exécuté à partir de la msdb base de données.

La mise à jour de l'étape d'un travail incrémente le numéro de version de ce travail.

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

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.

Seuls les membres de sysadmin peuvent mettre à jour une étape de travail d’un travail appartenant à un autre utilisateur.

Si l'étape d'un travail nécessite un accès à un proxy, le créateur de l'étape doit avoir accès au proxy pour l'étape du travail. Tous les sous-systèmes, excepté Transact-SQL, requièrent un compte proxy. Les membres de sysadmin ont accès à tous les proxys et peuvent utiliser le compte de service SQL Server Agent pour le proxy.

Exemples

L'exemple suivant modifie le nombre de tentatives de reprises pour la première étape du travail Weekly Sales Data Backup. Après avoir exécuté cet exemple, le nombre de nouvelles tentatives est 10.

USE msdb;
GO

EXEC dbo.sp_update_jobstep
    @job_name = N'Weekly Sales Data Backup',
    @step_id = 1,
    @retry_attempts = 10;
GO