sp_add_jobstep (Transact-SQL)

來源:互聯網
上載者:User
sp_add_jobstep (Transact-SQL) 

已更新: 2006 年 4 月 14 日

在作業中添加一個步驟(操作)。

文法

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 ]
[ , { [ @proxy_id = ] proxy_id
| [ @proxy_name = ] 'proxy_name' } ]

參數

[ @job_id = ] job_id

要添加步驟的作業的標識號。job_id 的資料類型為 uniqueidentifier,預設值為 NULL。

[ @job_name = ] 'job_name'

要添加步驟的作業的名稱。job_name 的資料類型為 sysname,預設值為 NULL。

注意:
必須指定 job_id 或 job_name,但不能兩個都指定。

[ @step_id = ] step_id

作業步驟的序列標識號。步驟標識號從 1 開始,並無間斷遞增。如果在現有序列中插入一個步驟,則將自動調整序號。如果不指定 step_id,則將提供一個值。step_id 的資料類型為 int,預設值為 NULL。

[ @step_name = ] 'step_name'

步驟的名稱。step_name 的資料類型為 sysname,無預設值。

[ @subsystem = ] 'subsystem'

Microsoft SQL Server Agent服務用於執行 command 的子系統。subsystem 的資料類型為 nvarchar(40),可以是下列值之一:

說明

'ACTIVESCRIPTING'

動態指令碼處理

'CMDEXEC'

作業系統命令或可執行程式

'DISTRIBUTION'

複製分發代理作業

'SNAPSHOT'

複製快照代理作業

'LOGREADER'

複製記錄讀取器代理程式作業

'MERGE'

複製合并代理作業

'QueueReader'

複製佇列讀取器代理程式作業

'ANALYSISQUERY'

Analysis Services 查詢 (MDX、DMX)。

'ANALYSISCOMMAND'

Analysis Services 命令 (XMLA)。

'Dts'

Integration Services 包執行

'TSQL'(預設)

Transact-SQL 陳述式

[ @command = ] 'command'

SQLServerAgent 服務通過 subsystem 執行的命令。command 的資料類型為 nvarchar(max),預設值為 NULL。SQL Server Agent提供令牌替換,在編寫軟體程式時,它可提供與變數相同的靈活性。

重要事項:
在 SQL Server 2005 Service Pack 1 中,SQL Server Agent作業步驟的標記文法已發生更改。因此,作業步驟中使用的所有令牌現在必須附帶轉義宏,否則,這些作業步驟將失敗。此外,使用方括弧調用 SQL Server 2000 代理作業步驟標記的 SQL Server 文法(例如,“[DATE]”)也已發生更改。現在,必須用括弧將令牌名稱括起來,並在令牌文法的開頭加上貨幣符號 ($)。例如:

$(ESCAPE_宏名稱(DATE))

有關這些令牌和更新作業步驟以使用新令牌文法的詳細資料,請參閱在作業步驟中使用標記。

安全記事:
對 Windows 事件記錄具有寫入許可權的任何 Windows 使用者都可以訪問由 SQL Server Agent警報或 WMI 警報啟用的作業步驟。為了確保安全,預設情況下,可在警報啟用的作業中使用的 SQL Server Agent令牌處于禁用狀態。這些令牌是:A-DBN、A-SVR、A-ERR、A-SEV、A-MSG 和 WMI(property)。

如果您需要使用這些令牌,請首先確保只有可信任的 Windows 安全性群組(如 Administrators 組)成員才對安裝 SQL Server 的電腦的事件記錄具有寫入許可權。然後在物件總管中按右鍵“SQL Server Agent”,選擇“屬性”,並在“警報系統”頁上選擇“為警報的所有作業響應替換令牌”以啟用這些令牌。

[ @additional_parameters = ] 'parameters'

保留。parameters 的資料類型為 ntext,預設值為 NULL。

[ @cmdexec_success_code = ] code

CmdExec 子系統命令返回的值,用於指示 command 已成功執行。code 的資料類型為 int,預設值為 0。

[ @on_success_action = ] success_action

步驟成功時執行的操作。success_action 的資料類型為 tinyint,可以是下列值之一:

說明(操作)

1(預設值)

成功後退出

2

失敗後退出

3

轉到下一步

4

轉到步驟 on_success_step_id。

[ @on_success_step_id = ] success_step_id

步驟成功並且 success_action 的值為 4 時,該作業中要執行的步驟的 ID。success_step_id 的資料類型為 int,預設值為 0。

[ @on_fail_action = ] fail_action

步驟失敗時執行的操作。fail_action 的資料類型為 tinyint,可以是下列值之一:

說明(操作)

1

成功後退出

2(預設值)

失敗後退出

3

轉到下一步

4

轉到步驟 on_fail_step_id。

[ @on_fail_step_id = ] fail_step_id

步驟失敗並且 fail_action 的值為 4 時,該作業中要執行的步驟的 ID。fail_step_id 的資料類型為 int,預設值為 0。

[ @server =] 'server'

保留。server 的資料類型為 nvarchar(30),預設值為 NULL。

[ @database_name = ] 'database'

在其中執行 Transact-SQL 步驟的資料庫的名稱。database 的資料類型為 sysname,預設值為 NULL,此時將使用 master 資料庫。對於 ActiveX 作業步驟,database 是該步驟使用的指令碼語言的名稱。

[ @database_user_name = ] 'user'

執行 Transact-SQL 步驟時要使用的使用者帳戶的名稱。user 的資料類型為 sysname,預設值為 NULL。如果 user 為 NULL,則該步驟將在 database 中的作業所有者使用者上下文中運行。

[ @retry_attempts = ] retry_attempts

該步驟失敗時的重試次數。retry_attempts 的資料類型為 int,預設值為 0,指示不重試。

[ @retry_interval = ] retry_interval

兩次重試之間的間隔時間(分鐘)。retry_interval 的資料類型為 int,預設值為 0,指示稍候再試為 0 分鐘。

[ @os_run_priority = ] run_priority

保留。

[ @output_file_name = ] 'file_name'

用 於儲存該步驟輸出的檔案的名稱。file_name 的資料類型為 nvarchar(200),預設值為 NULL。file_name 可包含 command 下列出的一個或多個令牌。該參數僅對在 Transact-SQL 或 CmdExec 子系統上啟動並執行命令有效。

[ @flags = ] flags

控制行為的選項。flags 的資料類型為 int,可以是下列值之一:

說明

0(預設值)

覆蓋輸出檔案

2

追加到輸出檔案

4

將 Transact-SQL 作業步驟輸出寫入步驟記錄

8

將日誌寫入表(覆蓋現有的記錄)

16

將日誌寫入表中(追加到現有記錄)

[ @proxy_id = ] proxy_id

作業步驟作為代理運行時,代理的 識別碼。proxy_id 的資料類型為 int,預設值為 NULL。如果未指定 proxy_id、proxy_name 和 user_name,則作業步驟將作為 SQL Server Agent的服務帳戶運行。

[ @proxy_name = ] 'proxy_name'

作業步驟作為代理運行時,代理的名稱。proxy_name 的資料類型為 sysname,預設值為 NULL。如果未指定 proxy_id、proxy_name 和 user_name,則作業步驟將作為 SQL Server Agent的服務帳戶運行。

備忘

必須從 msdb 資料庫運行 sp_add_jobstep。

SQL Server Management Studio 為管理作業提供了一種圖形化的簡便方法,建議使用此方法來建立和管理作業基礎結構。

除非作業步驟的建立者是 sysadmin 固定資訊安全角色的成員,否則作業步驟必須指定一個代理。

代理可通過 proxy_name 或 proxy_id 標識。

傳回碼值

0(成功)或 1(失敗)

結果集

許可權

預設情況下,只有 sysadmin 固定伺服器角色的成員才可以執行此預存程序。其他使用者必須被授予 msdb 資料庫中下列 SQL Server Agent固定資料庫角色的許可權之一:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

有關這些角色的許可權的詳細資料,請參閱 SQL Server Agent固定資料庫角色。

作業步驟的建立者必須有權訪問作業步驟的代理。sysadmin 固定伺服器角色的成員可以訪問所有代理。其他使用者必須經過顯式授予才能訪問代理。

樣本

以下樣本可建立一個作業步驟,將 AdventureWorks 資料庫的存取權限更改為唯讀。此外,此樣本還指定了 5 次重試,每次重試之間的間隔為 5 分鐘。

注意:
此樣本假定已經存在 Weekly Sales Data Backup 作業。

USE msdb ;
GO

EXEC sp_add_jobstep
@job_name = N'Weekly Sales Data Backup',
@step_name = N'Set database to read only',
@subsystem = N'TSQL',
@command = N'exec sp_dboption ''sales'', ''read only'', ''true''',
@retry_attempts = 5,
@retry_interval = 5 ;
GO

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.