sp_update_jobstep (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

變更作業中用來在 SQL Server Agent 服務中執行自動化活動的步驟設定。

Transact-SQL 語法慣例

語法

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' ]
[ ; ]

引數

[ @job_id = ] 'job_id'

步驟所屬之作業的標識碼。 @job_id為 uniqueidentifier,預設值為 NULL

必須指定@job_id@job_name,但無法指定兩者。

[ @job_name = ] N'job_name'

這是步驟所屬的作業名稱。 @job_name為 sysname,預設值為 NULL

必須指定@job_id@job_name,但無法指定兩者。

[ @step_id = ] step_id

要修改的作業步驟的識別碼。 @step_id為 int,沒有預設值。 無法變更此數位。

[ @step_name = ] N'step_name'

步驟的新名稱。 @step_name為 sysname,預設值為 NULL

[ @subsystem = ] N'subsystem'

SQL Server Agent 用來執行 @command的子系統。 @subsystem為 nvarchar(40),預設值為 NULL

[ @command = ] N'command'

要透過 @subsystem 執行的命令。 @command為 nvarchar(max),預設值為 NULL

[ @additional_parameters = ] N'additional_parameters'

僅供參考之用。 不支援。 我們無法保證未來的相容性。

[ @cmdexec_success_code = ] cmdexec_success_code

CmdExec 子系統命令傳回的值,表示該命令已順利執行。 @cmdexec_success_code為 int,預設值為 NULL

[ @on_success_action = ] on_success_action

如果步驟成功,要執行的動作。 @on_success_action為 tinyint,預設值NULL為 ,而且可以是下列其中一個值。

描述(動作)
1 成功結束
2 因失敗而結束
3 移至下一個步驟
4 移至步驟 @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

如果步驟成功且@on_success_action為 ,則此作業中要執行的步驟標識碼。4 @on_success_step_id為 int,預設值為 NULL

[ @on_fail_action = ] on_fail_action

如果步驟失敗,要執行的動作。 @on_fail_action為 tinyint,而且可以有下列其中一個值。

描述(動作)
1 成功結束
2 因失敗而結束
3 移至下一個步驟
4 移至步驟 @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

如果步驟失敗且 @on_fail_action4,則此作業中要執行之步驟的標識符。 @on_fail_step_id為 int,預設值為 NULL

[ @server = ] N'server'

僅供參考之用。 不支援。 我們無法保證未來的相容性。

[ @database_name = ] N'database_name'

要在其中執行 Transact-SQL 步驟的資料庫名稱。 @database_name為 sysname,預設值為 NULL。 不允許以括弧 ([]) 括住的名稱。

[ @database_user_name = ] N'database_user_name'

執行 Transact-SQL 步驟時要使用的資料庫用戶名稱。 @database_user_name為 sysname,預設值為 NULL

[ @retry_attempts = ] retry_attempts

此步驟失敗時的重試次數。 @retry_attempts為 int,預設值為 NULL

[ @retry_interval = ] retry_interval

重試的間隔時間 (以分鐘為單位)。 @retry_interval 為 int,預設值為 NULL

[ @os_run_priority = ] os_run_priority

僅供參考之用。 不支援。 我們無法保證未來的相容性。

[ @output_file_name = ] N'output_file_name'

儲存此步驟輸出的檔名。 @output_file_name為 nvarchar(200),預設值為 NULL。 此參數只有在 Transact-SQL 或 CmdExec 子系統中執行的命令才有效。

若要將@output_file_name設定回 NULL,您必須將@output_file_name設定為空字串或空白字元字串,但無法使用 函CHAR(32)式。

例如,將此自變數設定為空字串,如下所示:

@output_file_name = ' '

[ @flags = ] 旗標

控制行為的選項。 @flags為 int,預設值為 NULL

Description
0 (預設值) 覆寫輸出檔案
2 附加至輸出檔案
4 將 Transact-SQL 作業步驟輸出寫入至步驟歷程記錄
8 將記錄寫入資料表(覆寫現有的歷程記錄)
16 將記錄寫入資料表(附加至現有記錄)

[ @proxy_id = ] proxy_id

作業步驟執行之 Proxy 的標識碼。 @proxy_id為 int,預設值為 NULL如果未指定任何@proxy_id,則未指定任何@proxy_name,且未指定任何@database_user_name,作業步驟會以 SQL Server Agent 的服務帳戶執行。

[ @proxy_name = ] N'proxy_name'

作業步驟執行所在的 Proxy 名稱。 @proxy_name為 sysname,預設值為 NULL如果未指定任何@proxy_id,則未指定任何@proxy_name,且未指定任何@database_user_name,作業步驟會以 SQL Server Agent 的服務帳戶執行。

傳回碼值

0 (成功)或 1 (失敗)。

備註

sp_update_jobstep 必須從 msdb 資料庫執行。

更新作業步驟會遞增作業版本號碼。

此預存程式會與 Azure SQL 資料庫 的 Azure 彈性作業服務類似物件共享 的名稱sp_update_jobstep。 如需彈性作業版本的相關信息,請參閱 jobs.sp_update_jobstep (Azure Elastic Jobs) (Transact-SQL)

權限

此預存程式是由 db_owner 角色所擁有。 您可以授與 EXECUTE 任何用戶的許可權,但這些許可權可能會在 SQL Server 升級期間覆寫。

其他用戶必須在資料庫中獲得下列其中一個 SQL Server Agent 固定資料庫角色 msdb

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

如需這些角色權限的詳細資訊,請參閱 SQL Server Agent 固定資料庫角色

只有系統管理員的成員可以更新其他用戶擁有之作業的作業步驟。

如果作業步驟需要 Proxy 的存取權,作業步驟的建立者必須能夠存取作業步驟的 Proxy。 Transact-SQL 以外的所有子系統都需要 Proxy 帳戶。 系統管理員的成員可以存取所有 Proxy,而且可以使用 Proxy 的 SQL Server Agent 服務帳戶。

範例

下列範例會變更作業第一個步驟的 Weekly Sales Data Backup 重試次數。 執行此範例之後,重試嘗試次數是 10

USE msdb;
GO

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