sp_update_jobstep (Transact-SQL)
變更用來執行自動化活動之作業步驟的設定。
語法
sp_update_jobstep
{ [@job_id =] job_id
| [@job_name =] 'job_name' } ,
[@step_id =] step_id
[ , [@step_name =] 'step_name' ]
[ , [@subsystem =] 'subsystem' ]
[ , [@command =] 'command' ]
[ , [@additional_parameters =] 'parameters' ]
[ , [@cmdexec_success_code =] success_code ]
[ , [@on_success_action =] success_action ]
[ , [@on_success_step_id =] success_step_id ]
[ , [@on_fail_action =] fail_action ]
[ , [@on_fail_step_id =] fail_step_id ]
[ , [@server =] 'server' ]
[ , [@database_name =] 'database' ]
[ , [@database_user_name =] 'user' ]
[ , [@retry_attempts =] retry_attempts ]
[ , [@retry_interval =] retry_interval ]
[ , [@os_run_priority =] run_priority ]
[ , [@output_file_name =] 'file_name' ]
[ , [@flags =] flags ]
[ , { [ @proxy_id = ] proxy_id
| [ @proxy_name = ] 'proxy_name' }
引數
[ @job_id =] job_id
這是步驟所屬之作業的識別碼。 job_id是 uniqueidentifier,預設值是 NULL。 您必須指定 job_id 或 job_name,但不能同時指定這兩者。[ @job_name =] 'job_name'
這是步驟所屬的作業名稱。 job_name是 sysname,預設值是 NULL。 您必須指定 job_id 或 job_name,但不能同時指定這兩者。[ @step_id =] step_id
要修改的作業步驟的識別碼。 無法變更這個識別碼。 step_id 是 int,沒有預設值。[ @step_name =] 'step_name'
這是步驟的新名稱。 step_name是 sysname,預設值是 NULL。[ @subsystem =] 'subsystem'
Microsoft SQL Server Agent 用來執行 command 的子系統。 subsystem 是 nvarchar(40),預設值是 NULL。[ @command =] 'command'
利用 subsystem 來執行的命令。 command 是 nvarchar(max),預設值是 NULL。[ @additional_parameters =] 'parameters'
僅供參考之用。不支援。我們無法保證未來的相容性。[ @cmdexec_success_code =] success_code
CmdExec 子系統命令傳回的值,指出 command 已執行成功。 success_code 是 int,預設值是 NULL。[ @on_success_action =] success_action
步驟成功時所要執行的動作。success_action 是 tinyint,預設值是 NULL,且可以是下列其中一值。值
描述 (動作)
1
成功而結束。
2
失敗而結束。
3
移至下一步驟。
4
移至步驟 success_step_id.
[ @on_success_step_id =] success_step_id
如果步驟成功且 success_action 是 4,則為此作業中要執行之步驟的識別碼。 success_step_id 是 int,預設值是 NULL。[ @on_fail_action =] fail_action
步驟失敗時所要執行的動作。 fail_action 是 tinyint,預設值是 NULL,且可以有下列其中一值。值
描述 (動作)
1
成功而結束。
2
失敗而結束。
3
移至下一步驟。
4
移至步驟 fail_step_id。
[ @on_fail_step_id =] fail_step_id
如果步驟失敗且 fail_action 是 4,則為此作業中要執行之步驟的識別碼。 fail_step_id 是 int,預設值是 NULL。[ @server =] 'server'
僅供參考之用。不支援。我們無法保證未來的相容性。 server 是 nvarchar(128),預設值是 NULL。[ @database_name =] 'database'
Transact-SQL 步驟執行所在的資料庫名稱。 database是 sysname。 不允許以括號 ([ ]) 括住的名稱。 預設值是 NULL。[ @database_user_name =] 'user'
執行 Transact-SQL 步驟時所用的使用者帳戶名稱。 user是 sysname,預設值是 NULL。[ @retry_attempts =] retry_attempts
此步驟失敗時的重試次數。 retry_attempts是 int,預設值是 NULL。[ @retry_interval =] retry_interval
重試的間隔時間 (以分鐘為單位)。 retry_interval 是 int,預設值是 NULL。[ @os_run_priority =] run_priority
僅供參考之用。不支援。我們無法保證未來的相容性。[ @output_file_name =] 'file_name'
儲存此步驟之輸出的檔案名稱。 file_name 是 nvarchar(200),預設值是 NULL。 這個參數只對在 Transact-SQL 或 CmdExec 子系統中執行的命令有效。若要將 output_file_name 設為 NULL,您必須將 output_file_name 設為空字串 (' '),或設為空白字元字串,但您不能使用 CHAR(32) 函數。 例如,依照下列方式,將這個引數設為空字串:
@output_file_name = ' '
[ @flags =] flags
控制行為的選項。 flags 是 int,而且可以是下列其中一個值。值
說明
0 (預設值)
覆寫輸出檔。
2
附加至輸出檔。
4
將 Transact-SQL 作業步驟輸出寫入步驟記錄。
8
將記錄寫入資料表 (覆寫現有的記錄)。
16
將記錄寫入資料表 (附加至現有的記錄)。
[ @proxy_id= ] proxy_id
用於執行作業步驟之 Proxy 的識別碼。 proxy_id 的類型是 int,預設值是 NULL。 如果 proxy_id、proxy_name 和 user_name 都沒有指定,就會用 SQL Server Agent 的服務帳戶來執行作業步驟。[ @proxy_name= ] 'proxy_name'
用於執行作業步驟的 Proxy 名稱。 proxy_name 的類型是 sysname,預設值是 NULL。 如果 proxy_id、proxy_name 和 user_name 都沒有指定,就會用 SQL Server Agent 的服務帳戶來執行作業步驟。
傳回碼值
0 (成功) 或 1 (失敗)
備註
sp_update_jobstep 必須從 msdb 資料庫中執行。
更新作業步驟會累加作業版本號碼。
權限
依預設,只有系統管理員 (sysadmin) 固定伺服器角色的成員,才能夠執行這個預存程序。 其他使用者必須被授與 msdb 資料庫的下列其中一個 SQL Server Agent 固定資料庫角色。
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
如需有關這些角色權限的詳細資料,請參閱<SQL Server Agent 固定資料庫角色>。
只有系統管理員 (sysadmin) 的成員可以更新另一位使用者所擁有的作業步驟。
如果作業步驟需要存取 Proxy,作業步驟的建立者必須有權存取作業步驟的 Proxy。 除了 Transact-SQL,所有子系統都需要 Proxy 帳戶。 系統管理員 (sysadmin) 的成員有權存取所有 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
請參閱
參考
sp_delete_jobstep (Transact-SQL)
sp_help_jobstep (Transact-SQL)