jobs.sp_update_jobstep (Azure 弹性作业) (Transact-SQL)

适用于:Azure SQL 数据库

修改 Azure 弹性作业服务中现有作业中用于Azure SQL 数据库的作业步骤。 使用 jobs.sp_add_jobstep 向作业添加作业步骤。

此存储过程与 SQL Server 中用于SQL Server 代理服务的类似对象共享名称sp_update_jobstep。 有关SQL Server 代理版本的信息,请参阅sp_update_jobstep(Transact-SQL)。

Transact-SQL 语法约定

语法

[jobs].sp_update_jobstep [ @job_name = ] 'job_name'
     [ , [ @step_id = ] step_id ]
     [ , [ @step_name = ] 'step_name' ]
     [ , [ @new_id = ] new_id ]
     [ , [ @new_name = ] 'new_name' ]
     [ , [ @command_type = ] 'command_type' ]
     [ , [ @command_source = ] 'command_source' ]  
     , [ @command = ] 'command'
     [, [ @credential_name = ] 'credential_name' ]
     , [ @target_group_name = ] 'target_group_name'
     [ , [ @initial_retry_interval_seconds = ] initial_retry_interval_seconds ]
     [ , [ @maximum_retry_interval_seconds = ] maximum_retry_interval_seconds ]
     [ , [ @retry_interval_backoff_multiplier = ]retry_interval_backoff_multiplier ]
     [ , [ @retry_attempts = ] retry_attempts ]
     [ , [ @step_timeout_seconds = ] step_timeout_seconds ]
     [ , [ @output_type = ] 'output_type' ]
     [ , [ @output_credential_name = ] 'output_credential_name' ]
     [ , [ @output_server_name = ] 'output_server_name' ]
     [ , [ @output_database_name = ] 'output_database_name' ]
     [ , [ @output_schema_name = ] 'output_schema_name' ]
     [ , [ @output_table_name = ] 'output_table_name' ]
     [ , [ @job_version = ] job_version OUTPUT ]
     [ , [ @max_parallelism = ] max_parallelism ]

参数

@job_name

步骤所属的作业的名称。 job_name 为 nvarchar(128)。

@step_id

要修改的作业步骤的标识号。 必须指定step_idstep_name step_id是一个 int。

@step_name

要修改的步骤的名称。 必须指定step_idstep_name step_name为 nvarchar(128)。

@new_id

作业步骤的新序列标识号。 步骤标识号从 1 开始连续递增。 如果某个步骤重新标记顺序,则其他步骤也会自动重新编号。

@new_name

步骤的新名称。 new_name为 nvarchar(128)。

@command_type

此作业步骤执行的命令的类型。 command_type为 nvarchar(50),默认值TSql为,这意味着@command_type参数的值是 T-SQL 脚本。

如果指定,该值必须是 TSql

@command_source

命令存储位置的类型。 command_source为 nvarchar(50),默认值Inline为,这意味着@command参数的值是命令的文本文本。

如果指定,该值必须是 Inline

@command

要执行此作业步骤的有效 T-SQL 脚本。 命令 为 nvarchar(max),默认值为 NULL.

@credential_name

执行此步骤时,存储在此作业控制数据库中的数据库范围的凭据的名称,该数据库用于连接到目标组中的每个目标数据库。 credential_name 为 nvarchar(128)。

使用 Microsoft Entra 身份验证(前为 Azure Active Directory)时,省略 @credential_name 参数,仅当使用数据库范围的凭据时,才应提供此参数。

@target_group_name

包含将执行作业步骤的目标数据库的目标组的名称。 target_group_name 为 nvarchar(128)。

@initial_retry_interval_seconds

第一次重试尝试之前的延迟,前提是作业步骤在初始执行尝试时失败。 initial_retry_interval_seconds 为 int,默认值为 1。

@maximum_retry_interval_seconds

重试尝试之间的最大延迟。 如果重试之间的延迟大于此值,则会将其削减到此值。 maximum_retry_interval_seconds为 int,默认值为 120。

@retry_interval_backoff_multiplier

将要应用到重试延迟的乘数,前提是多个作业步骤执行尝试失败。 例如,如果首次重试的延迟为 5 秒,而回退乘数为 2.0,则第二次重试的延迟为 10 秒,第三次重试的延迟为 20 秒。 retry_interval_backoff_multiplier是实际数据类型,默认值为 2.0。

@retry_attempts

重试执行的次数,前提是初始尝试失败。 例如,如果 retry_attempts 值为 10,则会出现 1 次初始尝试和 10 次重试尝试,总共尝试 11 次。 如果最终重试尝试失败,则作业执行将终止lifecycleFailed并记录在jobs.job_executions retry_attempts为 int,默认值为 10。

@step_timeout_seconds

允许步骤执行的最长时间。 如果超过此时间,则作业执行将以记录在 jobs.job_executions终止lifecycleTimedOut step_timeout_seconds为 int,默认值为 43,200 秒(12 小时)。

@output_type

NULL否则,命令的第一个结果集写入的目标类型。 若要将output_type的值重置回NULL,请将此参数的值设置为“'”(空字符串)。 output_type 为 nvarchar(50),默认值为 NULL.

如果指定,该值必须是 SqlDatabase

@output_credential_name

NULL否则,用于连接到输出目标数据库的数据库范围凭据的名称。 如果output_type等于SqlDatabase则必须指定 。 若要将output_credential_name的值重置回 NULL,请将此参数的值设置为“'”(空字符串)。 output_credential_name为 nvarchar(128),默认值为 NULL.

使用 Microsoft Entra 身份验证(前为 Azure Active Directory)时,省略 @output_credential_name 参数,仅当使用数据库范围的凭据时,才应提供此参数。

@output_server_name

NULL如果没有,则为包含输出目标数据库的服务器的完全限定 DNS 名称,@output_server_name = 'server1.database.windows.net'例如。 如果output_type等于SqlDatabase则必须指定 。 若要将output_server_name的值重置回 NULL,请将此参数的值设置为“'”(空字符串)。 output_server_name为 nvarchar(256),默认值为 NULL.

@output_database_name

NULL否则,包含输出目标表的数据库的名称。 如果output_type等于SqlDatabase则必须指定 。 若要将output_database_name的值重置回NULL,请将此参数的值设置为“'”(空字符串)。 output_database_name为 nvarchar(128),默认值为 NULL.

@output_schema_name

NULL否则,包含输出目标表的 SQL 架构的名称。 如果output_type相等SqlDatabase,则默认值为 dbo 。 若要将output_schema_name的值重置回NULL,请将此参数的值设置为“'”(空字符串)。 output_schema_name为 nvarchar(128)。

@output_table_name

NULL否则,命令的第一个结果集将写入的表的名称。 如果此表不存在,则会根据返回结果集的架构来创建它。 如果output_type等于SqlDatabase则必须指定 。 若要将output_server_name的值重置回NULL,请将此参数的值设置为“'”(空字符串)。 output_table_name为 nvarchar(128),默认值为 NULL.

如果指定output_table_name,应向作业代理 UMI 或数据库范围的凭据授予对表中 CREATE TABLE 和 IN标准版RT 数据所需的权限。

@job_version 输出

一个输出参数,将会为其分配新作业版本号。 job_version为 int。

@max_parallelism 输出

每个弹性池的最大并行度级别。 如果设置此项,则作业步骤会受到限制,每个弹性池中可以在其上运行作业步骤的数据库会有一个最大数目。 这适用于每个特定的弹性池,该弹性池直接包括在目标组中,或者服务器的弹性池中,而该服务器则包括在目标组中。 若要将max_parallelism的值重置回NULL,请将此参数的值设置为 -1 max_parallelism为 int。

返回代码值

0(成功)或 1(失败)

备注

不会影响作业的正在进行的执行操作。 成功后 jobs.sp_update_jobstep ,作业的版本号将递增。 下次执行作业时,会使用新版本。

权限

默认情况下,只有 sysadmin 固定服务器角色的成员才可以执行此存储过程。 仅 sysadmin 的成员可以使用此存储过程来编辑其他用户拥有的作业的属性

示例

弹性作业步骤的更新命令

此示例更新现有弹性作业步骤的 T-SQL 命令。 T-SQL 脚本会添加一个作业步骤,用于创建表(如果表不存在)。

--Connect to the job database specified when creating the elastic job agent

-- Add job step to create a table if it does not exist
EXEC jobs.sp_update_jobstep @job_name = 'CreateTableTest',
@command = N'IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id(''Test''))
CREATE TABLE [dbo].[Test]([TestId] [int] NOT NULL);',
@target_group_name = 'PoolGroup';