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_id OUTPUT
-
成功建立了作業時,分配給作業的作業標識號。job_id 是 uniqueidentifier 類型的輸出變數,預設值為 NULL。
備忘
@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 為管理作業提供了一種圖形化的簡便方法,建議使用此方法來建立和管理作業基礎結構。
傳回碼值
0(成功)或 1(失敗)
結果集
無
許可權
若要運行此預存程序,使用者必須是 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. 添加一個具有呼叫、電子郵件和網路發送資訊的作業
該樣本將建立一個名為 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