共用方式為


sp_add_job (Transact-SQL)

加入 SQLServerAgent 服務所執行的新作業。

主題連結圖示 Transact-SQL 語法慣例

語法

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_serversp_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)