將一個(gè)步驟(操作)添加到作業(yè)中。
sp_add_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 = ] 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 ]
[@job_id =] job_id
將步驟添加于其中的作業(yè)的標(biāo)識(shí)號(hào)。job_id 的數(shù)據(jù)類(lèi)型為 uniqueidentifier,默認(rèn)設(shè)置為 NULL。
[@job_name =] 'job_name'
將步驟添加于其中的作業(yè)的名稱(chēng)。job_name 的數(shù)據(jù)類(lèi)型為 sysname,默認(rèn)設(shè)置為 NULL。
說(shuō)明 必須指定 job_id 或 job_name,但不能兩個(gè)都指定。
[@step_id =] step_id]
作業(yè)步驟的序列標(biāo)識(shí)號(hào)。步驟標(biāo)識(shí)號(hào)從 1 開(kāi)始,并以 1 為增量,中間無(wú)間隙。如果在現(xiàn)有序列中插入步驟,則序列號(hào)可以自動(dòng)調(diào)整。如果沒(méi)有指定 step_id,則提供一個(gè)值。step_id 的數(shù)據(jù)類(lèi)型為 int,默認(rèn)設(shè)置為 NULL。
[@step_name =] 'step_name'
是步驟的名稱(chēng)。step_name 的數(shù)據(jù)類(lèi)型為 sysname,沒(méi)有默認(rèn)設(shè)置。
[@subsystem =] 'subsystem'
是 SQL Server 代理服務(wù)用于執(zhí)行 command 的子系統(tǒng)。subsystem 的數(shù)據(jù)類(lèi)型為 nvarchar(40),可以是下列值之一。
| 值 | 描述 |
|---|---|
| 'ACTIVESCRIPTING' | 動(dòng)態(tài)腳本 |
| 'CMDEXEC' | 操作系統(tǒng)命令或可執(zhí)行程序 |
| 'DISTRIBUTION' | 復(fù)制分發(fā)代理程序作業(yè) |
| 'SNAPSHOT' | 復(fù)制快照代理程序作業(yè) |
| 'LOGREADER' | 復(fù)制日志讀取器代理程序作業(yè) |
| 'MERGE' | 復(fù)制合并代理程序作業(yè) |
| 'TSQL'(默認(rèn)) | Transact-SQL 語(yǔ)句 |
[@command =] 'command'
SQLServerAgent 服務(wù)通過(guò) subsystem 執(zhí)行的命令。command 的數(shù)據(jù)類(lèi)型為 nvarchar(3200),默認(rèn)設(shè)置為 NULL。command 可包括下面一個(gè)或多個(gè)區(qū)分大小寫(xiě)的令牌,這些令牌在運(yùn)行時(shí)被替換。
| 值 | 描述 |
|---|---|
| [A-DBN] | 數(shù)據(jù)庫(kù)名稱(chēng)。如果由某個(gè)警報(bào)來(lái)運(yùn)行作業(yè),則在轉(zhuǎn)換進(jìn)程中,該標(biāo)記會(huì)自動(dòng)地替換版本 6.5 [DBN] 標(biāo)記。 |
| [A-SVR] | 服務(wù)器名稱(chēng)。如果由某個(gè)警報(bào)來(lái)運(yùn)行作業(yè),則在轉(zhuǎn)換進(jìn)程中,該標(biāo)記會(huì)自動(dòng)地替換版本 6.5 [SVR] 標(biāo)記。 |
| [A-ERR] | 錯(cuò)誤號(hào)。如果由某個(gè)警報(bào)來(lái)運(yùn)行作業(yè),則在轉(zhuǎn)換進(jìn)程中,該標(biāo)記會(huì)自動(dòng)地替換版本 6.5 [ERR] 標(biāo)記。 |
| [A-SEV] | 錯(cuò)誤嚴(yán)重度。如果由某個(gè)警報(bào)來(lái)運(yùn)行作業(yè),則在轉(zhuǎn)換進(jìn)程中,該標(biāo)記會(huì)自動(dòng)地替換版本 6.5 [SEV] 標(biāo)記。 |
| [A-MSG] | 消息文本。如果由某個(gè)警報(bào)來(lái)運(yùn)行作業(yè),則在轉(zhuǎn)換進(jìn)程中,該標(biāo)記會(huì)自動(dòng)地替換版本6.5 [MSG] 標(biāo)記。 |
| [DATE] | 當(dāng)前日期(以 YYYYMMDD 格式)。 |
| [JOBID] | 作業(yè) ID。 |
| [MACH] | 計(jì)算機(jī)名稱(chēng)。 |
| [MSSA] | 主 SQLServerAgent 服務(wù)名。 |
| [SQLDIR] | 安裝 SQL Server 的目錄。默認(rèn)情況下,該值是 C:\Program Files\Microsoft SQL Server\MSSQL。 |
| [STEPCT] | 該步驟執(zhí)行次數(shù)(不包括重試)的計(jì)數(shù)。該步驟命令可以使用它來(lái)強(qiáng)制多步驟循環(huán)的終止。 |
| [STEPID] | 步驟 ID。 |
| [TIME] | 當(dāng)前時(shí)間(以 HHMMSS 格式)。 |
| [STRTTM] | 作業(yè)開(kāi)始執(zhí)行的時(shí)間(以 HHMMSS 格式)。 |
| [STRTDT] | 作業(yè)開(kāi)始執(zhí)行的日期(以 YYYYMMDD 格式)。 |
[@additional_parameters =] 'parameters'
保留。parameters 的數(shù)據(jù)類(lèi)型為 ntext,默認(rèn)設(shè)置為 NULL。
[@cmdexec_success_code =] code
CmdExec 子系統(tǒng)命令返回的值,該值表明 command 成功執(zhí)行。code 的數(shù)據(jù)類(lèi)型為 int,默認(rèn)設(shè)置為 0。
[@on_success_action =] success_action
步驟成功時(shí)所執(zhí)行的操作。success_action 的數(shù)據(jù)類(lèi)型為 tinyint,可以是下列值之一。
| 值 | 描述(操作) |
|---|---|
| 1(默認(rèn)值) | 成功后退出 |
| 2 | 失敗后退出 |
| 3 | 轉(zhuǎn)到下一步 |
| 4 | 轉(zhuǎn)到步驟 on_success_step_id |
[@on_success_step_id =] success_step_id
步驟成功并且 success_action 為 4 時(shí)所執(zhí)行的該作業(yè)中步驟的 ID。success_step_id 的數(shù)據(jù)類(lèi)型為 int,默認(rèn)設(shè)置為0。
[@on_fail_action =] fail_action
步驟失敗時(shí)所執(zhí)行的操作。fail_action 的數(shù)據(jù)類(lèi)型為 tinyint,可以是下列值之一。
| 值 | 描述(操作) |
|---|---|
| 1 | 成功后退出 |
| 2(默認(rèn)值) | 失敗后退出 |
| 3 | 轉(zhuǎn)到下一步 |
| 4 | 轉(zhuǎn)到步驟 on_fail_step_id |
[@on_fail_step_id =] fail_step_id
步驟失敗并且 fail_action 為 4 時(shí)所要執(zhí)行的該作業(yè)中步驟的 ID。fail_step_id 的數(shù)據(jù)類(lèi)型為 int,默認(rèn)設(shè)置為 0。
[@server =] 'server'
保留。server 的數(shù)據(jù)類(lèi)型為 nvarchar(30),默認(rèn)值為 NULL。
[@database_name =] 'database'
執(zhí)行 TSQL 步驟的數(shù)據(jù)庫(kù)名稱(chēng)。database 的數(shù)據(jù)類(lèi)型為 sysname,默認(rèn)設(shè)置為 NULL,在該情況下使用 master 數(shù)據(jù)庫(kù)。
[@database_user_name =] 'user'
是執(zhí)行 TSQL 步驟時(shí)所使用的用戶(hù)賬號(hào)名稱(chēng)。user 為 sysname 類(lèi)型,其默認(rèn)值為 NULL。user 為 NULL 時(shí),步驟運(yùn)行在作業(yè)所有者的用戶(hù) database 上下文中。
[@retry_attempts =] retry_attempts
該步驟失敗時(shí)所使用的重新嘗試次數(shù)。retry_attempts 的數(shù)據(jù)類(lèi)型為 int,默認(rèn)設(shè)置為 0,表示不允許重新嘗試。
[@retry_interval =] retry_interval
重新嘗試之間的時(shí)間量(以分鐘為單位)。retry_interval 的數(shù)據(jù)類(lèi)型為 int,默認(rèn)設(shè)置為 0,表示重試間隔為 0 分鐘。
[@os_run_priority =] run_priority
保留。
[@output_file_name =] 'file_name'
保存該步驟的輸出的文件名稱(chēng)。file_name 的數(shù)據(jù)類(lèi)型為 nvarchar(200),默認(rèn)設(shè)置為 NULL。file_name 可以包含 command 下的一個(gè)或多個(gè)令牌。該參數(shù)只有同 TSQL 或 CmdExec 子系統(tǒng)上運(yùn)行的命令一起使用時(shí)才有效。
[@flags =] flags
控制行為的選項(xiàng)。flags 的數(shù)據(jù)類(lèi)型為 int,可以是下列值之一。
| 值 | 描述 |
|---|---|
| 2 | 追加到輸出文件 |
| 4 | 重寫(xiě)輸出文件 |
| 0(默認(rèn)值) | 未設(shè)置選項(xiàng) |
0(成功)或 1(失?。?/P>
無(wú)
SQL Server 企業(yè)管理器提供易于使用的圖形方法來(lái)管理作業(yè),建議使用該方法創(chuàng)建和管理作業(yè)基本結(jié)構(gòu)。
執(zhí)行權(quán)限默認(rèn)授予 public 角色。
下面的示例創(chuàng)建一個(gè)作業(yè)步驟,該作業(yè)步驟更改名為 sales 的數(shù)據(jù)庫(kù)的只讀訪(fǎng)問(wèn)權(quán)限。此外,此示例指定進(jìn)行 5 次重新嘗試,重試間隔為 5 分鐘。
說(shuō)明 此示例假設(shè) Weekly Sales Data Backup 作業(yè)已經(jīng)存在。
USE msdb
EXEC sp_add_jobstep @job_name = 'Weekly Sales Data Backup',
@step_name = 'Set database to read only',
@subsystem = 'TSQL',
@command = 'exec sp_dboption ''sales'', ''read only'', ''true''',
@retry_attempts = 5,
@retry_interval = 5
相關(guān)文章