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_jobserver (Transact-SQL)
sp_apply_job_to_targets (Transact-SQL)
sp_delete_jobserver (Transact-SQL)
sp_remove_job_from_targets (Transact-SQL)