sp_update_jobstep (Transact-SQL)
適用於:SQL Server Azure SQL 受控執行個體
變更作業中用來在 SQL Server Agent 服務中執行自動化活動的步驟設定。
語法
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_action 為 4
,則此作業中要執行之步驟的標識符。 @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) 。
權限
您可以授與此 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