sp_add_job (Transact-SQL)
加入 SQLServerAgent 服務所執行的新作業。
語法
sp_add_job [ @job_name = ] 'job_name'
[ , [ @enabled = ] enabled ]
[ , [ @description = ] 'description' ]
[ , [ @start_step_id = ] step_id ]
[ , [ @category_name = ] 'category' ]
[ , [ @category_id = ] category_id ]
[ , [ @owner_login_name = ] 'login' ]
[ , [ @notify_level_eventlog = ] eventlog_level ]
[ , [ @notify_level_email = ] email_level ]
[ , [ @notify_level_netsend = ] netsend_level ]
[ , [ @notify_level_page = ] page_level ]
[ , [ @notify_email_operator_name = ] 'email_name' ]
[ , [ @notify_netsend_operator_name = ] 'netsend_name' ]
[ , [ @notify_page_operator_name = ] 'page_name' ]
[ , [ @delete_level = ] delete_level ]
[ , [ @job_id = ] job_id OUTPUT ]
引數
- [ @job_name = ] 'job_name'
作業的名稱。這個名稱必須是唯一的,且不能包含百分比 (%) 字元。job_name 是 nvarchar(128),沒有預設值。
- [ @enabled = ] enabled
指出所加入作業的狀態。enabled 是 tinyint,預設值是 1 (已啟用)。如果是 0,就不會啟用作業,也不會根據作業的排程來執行作業;不過,您可以手動執行它。
- [ @description = ] 'description'
作業的描述。description 是 nvarchar(512),預設值是 NULL。如果省略 description,就會使用「沒有可用的描述」。
- [ @start_step_id = ] step_id
這是作業要執行之第一個步驟的識別碼。step_id 是 int,預設值是 1。
- [ @category_name = ] 'category'
作業的類別目錄。category 是 sysname,預設值是 NULL。
- [ @category_id = ] category_id
用來指定作業類別目錄之不限特定語言的機制。category_id 是 int,預設值是 NULL。
- [ @owner_login_name = ] 'login'
擁有作業的登入名稱。login 是 sysname,預設值是 NULL,它是解譯為目前的登入名稱。只有系統管理員 (sysadmin) 固定伺服器角色的成員,才能夠設定或變更 @owner_login_name 的值。如果不是系統管理員 (sysadmin) 角色成員的使用者設定或變更 @owner_login_name 的值,則此預存程序的執行會失敗,並傳回錯誤。
[ @notify_level_eventlog = ] eventlog_level
這個值表示針對這項作業,何時將項目放在 Microsoft Windows 應用程式記錄中。eventlog_level 是 int,它可以是下列值之一。值 描述 0
永不
1
成功時
2 (預設值)
失敗時
3
永遠
- [ @notify_level_email = ] email_level
這個值表示在這項作業完成時,何時傳送電子郵件。email_level 是 int,預設值是 0,表示永不傳送。email_level 使用與 eventlog_level 相同的值。
- [ @notify_level_netsend = ] netsend_level
這個值表示在這項作業完成時,何時傳送網路訊息。netsend_level 是 int,預設值是 0,表示永不傳送。netsend_level 使用與 eventlog_level 相同的值。
- [ @notify_level_page = ] page_level
這個值表示在這項作業完成時,何時傳送頁面。page_level 是 int,預設值是 0,表示永不傳送。page_level使用與 eventlog_level 相同的值。
- [ @notify_email_operator_name = ] 'email_name'
當到達 email_level 時,電子郵件所要送往之人員的電子郵件名稱。email_name 是 sysname,預設值是 NULL。
- [ @notify_netsend_operator_name = ] 'netsend_name'
這項作業完成時,網路訊息所要送往的操作員名稱。netsend_name 是 sysname,預設值是 NULL。
- [ @notify_page_operator_name = ] 'page_name'
這項作業完成時,所要呼叫的人員名稱。page_name 是 sysname,預設值是 NULL。
[ @delete_level = ] delete_level
這是指出何時要刪除作業的值。delete_value 是 int,預設值是 0,表示永不刪除。delete_level 使用與 eventlog_level 相同的值。附註: 當 delete_level 是 3 時,作業只會執行一次,不論作業是否定義了任何排程,都是如此。此外,如果作業刪除作業本身,也會同時刪除作業的所有歷程記錄。
- [ @job_id = ] job_idOUTPUT
作業建立成功時,指派給作業的作業識別碼。job_id 是 uniqueidentifier 類型的輸出變數,預設值是 NULL。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
無
備註
@originating_server 在 sp_add_job, 中,但並未列在「引數」之下。保留 @originating_server,供內部使用。
在執行 sp_add_job 來加入作業之後,您可以利用 sp_add_jobstep 來加入執行作業活動的步驟。您可以利用 sp_add_jobschedule 來建立 SQL Server Agent 服務用來執行作業的排程。請利用 sp_add_jobserver 來設定執行作業的 SQL Server 執行個體,利用 sp_delete_jobserver 來移除 SQL Server 執行個體中的作業。
如果作業將在多伺服器環境中執行一或多部目標伺服器,請利用 sp_apply_job_to_targets 來設定作業的目標伺服器或目標伺服器群組。若要從目標伺服器或目標伺服器群組中移除作業,請使用 sp_remove_job_from_targets。
SQL Server Management Studio 提供了一種簡單的圖形方式供您管理各項作業,建議您利用這個方式來建立和管理作業基礎結構。
權限
若要執行這個預存程序,使用者必須是系統管理員 (sysadmin) 固定伺服器角色的成員,或被授與 msdb 資料庫的下列其中一個 SQL Server Agent 固定資料庫角色。
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
如需有關與每一個固定資料庫角色相關聯的特定權限資訊,請參閱<SQL Server Agent 固定資料庫角色>。
只有系統管理員 (sysadmin) 固定伺服器角色的成員,才能夠設定或變更 @owner_login_name 的值。如果不是系統管理員 (sysadmin) 角色成員的使用者設定或變更 @owner_login_name 的值,則此預存程序的執行會失敗,並傳回錯誤。
範例
A. 加入作業
這個範例會加入名稱為 NightlyBackups
的新作業。
USE msdb ;
GO
EXEC dbo.sp_add_job
@job_name = N'NightlyBackups' ;
GO
B. 利用呼叫器、電子郵件和 net send 資訊來加入作業
這個範例會建立一項名稱為 Ad hoc Sales Data Backup
的作業,以便在作業失敗時通知 François Ajenstat
(利用呼叫器、電子郵件或網路快顯訊息),以及在順利完成刪除作業。
附註: |
---|
這個範例假設名稱為 François Ajenstat 的操作員及名稱為 françoisa 的登入已經存在。 |
USE msdb ;
GO
EXEC dbo.sp_add_job
@job_name = N'Ad hoc Sales Data Backup',
@enabled = 1,
@description = N'Ad hoc backup of sales data',
@owner_login_name = N'françoisa',
@notify_level_eventlog = 2,
@notify_level_email = 2,
@notify_level_netsend = 2,
@notify_level_page = 2,
@notify_email_operator_name = N'François Ajenstat',
@notify_netsend_operator_name = N'François Ajenstat',
@notify_page_operator_name = N'François Ajenstat',
@delete_level = 1 ;
GO
請參閱
參考
sp_add_schedule (Transact-SQL)
sp_add_jobstep (Transact-SQL)
sp_add_jobserver (Transact-SQL)
sp_apply_job_to_targets (Transact-SQL)
sp_delete_job (Transact-SQL)
sp_delete_jobserver (Transact-SQL)
sp_remove_job_from_targets (Transact-SQL)
sp_help_job (Transact-SQL)
sp_help_jobstep (Transact-SQL)
sp_update_job (Transact-SQL)
系統預存程序 (Transact-SQL)