共用方式為


sp_add_schedule (Transact-SQL)

建立可供任意數量的作業使用的排程。

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

語法

sp_add_schedule [ @schedule_name = ] 'schedule_name' 
    [ , [ @enabled = ] enabled ]
    [ , [ @freq_type = ] freq_type ]
    [ , [ @freq_interval = ] freq_interval ] 
    [ , [ @freq_subday_type = ] freq_subday_type ] 
    [ , [ @freq_subday_interval = ] freq_subday_interval ] 
    [ , [ @freq_relative_interval = ] freq_relative_interval ] 
    [ , [ @freq_recurrence_factor = ] freq_recurrence_factor ] 
    [ , [ @active_start_date = ] active_start_date ] 
    [ , [ @active_end_date = ] active_end_date ] 
    [ , [ @active_start_time = ] active_start_time ] 
    [ , [ @active_end_time = ] active_end_time ] 
    [ , [ @owner_login_name = ] 'owner_login_name' ]
    [ , [ @schedule_uid = ] schedule_uid OUTPUT ]
    [ , [ @schedule_id = ] schedule_id OUTPUT ]
    [ , [ @originating_server = ] server_name ] /* internal */

引數

  • [ @schedule_name = ] 'schedule_name'
    排程的名稱。 schedule_name 是 sysname,沒有預設值。

  • [ @enabled = ] enabled
    指出排程的目前狀態。 enabled 是 tinyint,預設值是 1 (已啟用)。 如果是 0,就表示未啟用排程。 當未啟用排程時,不會依據這份排程來執行任何作業。

  • [ @freq_type = ] freq_type
    指出將執行作業之時間的值。 freq_type是 int,預設值為 0,而且可以是下列其中一個值。

    說明

    1

    一次

    4

    每日

    8

    每週

    16

    每月

    32

    每月,相對於 freq_interval

    64

    在 SQLServerAgent 服務啟動之時執行

    128

    在電腦閒置之時執行

  • [ @freq_interval = ] freq_interval
    執行作業的天數。 freq_interval 是 int,預設值是 1;它會隨著 freq_type 的值而不同。

    freq_type 的值

    freq_interval 的作用

    1 (一次)

    freq_interval 未使用。

    4 (每天)

    每隔 freq_interval 天。

    8 (每週)

    freq_interval 是下列一或多項 (以 OR 邏輯運算子結合):

    1 = 星期日

    2 = 星期一

    4 = 星期二

    8 = 星期三

    16 = 星期四

    32 = 星期五

    64 = 星期六

    16 (每月)

    在當月的第 freq_interval 天。

    32 (每月相對)

    freq_interval 是下列其中一項:

    1 = 星期日

    2 = 星期一

    3 = 星期二

    4 = 星期三

    5 = 星期四

    6 = 星期五

    7 = 星期六

    8 = 每週日期

    9 = 工作日

    10 = 週末

    64 (當 SQLServerAgent 服務啟動時)

    freq_interval 未使用。

    128

    freq_interval 未使用。

  • [ @freq_subday_type = ] freq_subday_type
    指定 freq_subday_interval 的單位。 freq_subday_type是 int,預設值為 0,而且可以是下列其中一個值。

    描述 (單位)

    0x1

    在指定的時間

    0x2

    0x4

    分鐘

    0x8

    小時

  • [ @freq_subday_interval = ] freq_subday_interval
    在各次執行作業之間發生的 freq_subday_type 週期數。 freq_subday_interval是 int,預設值是 0。 附註:間隔長度不應大於 10 秒。 在 freq_subday_type 等於 1 的情況下,系統會忽略 freq_subday_interval。

  • [ @freq_relative_interval = ] freq_relative_interval
    如果 freq_interval 是 32 (每月相對),便會在每月的 freq_interval 發生作業。 freq_relative_interval是 int,預設值為 0,而且可以是下列其中一個值。 當 freq_type 不等於 32 時,便會忽略 freq_relative_interval。

    描述 (單位)

    1

    第一個

    2

    第二個

    4

    第三個

    8

    第四個

    16

    最後一個

  • [ @freq_recurrence_factor = ] freq_recurrence_factor
    作業的各排程執行之間的週數或月數。 如果 freq_type 是 81632,則使用 freq_recurrence_factor。 freq_recurrence_factor是 int,預設值是 0

  • [ @active_start_date = ] active_start_date
    可以開始執行作業的日期。 active_start_date是 int,預設值是 NULL,表示今天的日期。 日期格式為 YYYYMMDD。 如果 active_start_date 不是 NULL,這個日期就必須大於或等於 19900101。

    建立排程之後,檢閱開始日期,並確認該日期正確。 如需詳細資訊,請參閱<建立及附加排程至作業>中的「排程開始日期」一節。

    若為每週或每月排程,代理程式會對 active_start_date 已是過去日期予以忽略,而將改為使用目前的日期。 使用 sp_add_schedule 建立 SQL 代理程式排程時,有一個選項可指定 active_start_date 參數,表示將要開始執行作業的日期。 如果排程類型是每週或每月,而且 active_start_date 參數設定為過去的日期,便會忽略 active_start_date 參數,並使用目前的日期做為 active_start_date。

  • [ @active_end_date = ] active_end_date
    可以停止執行作業的日期。 active_end_date是 int,預設值是 99991231,表示 9999 年 12 月 31 日。 格式為 YYYYMMDD。

  • [ @active_start_time = ] active_start_time
    在 active_start_date 和 active_end_date 之間的任何一天,開始執行作業的時間。 active_start_time是 int,預設值是 000000,表示 24 小時制的上午 12:00:00, 必須用 HHMMSS 格式來輸入。

  • [ @active_end_time = ] active_end_time
    在 active_start_date 和 active_end_date 之間的任何一天,結束執行作業的時間。 active_end_time是 int,預設值是 235959,表示 24 小時制的下午 11:59:59, 必須用 HHMMSS 格式來輸入。

  • [ @owner_login_name= ] 'owner_login_name'
    擁有排程之伺服器主體的名稱。 owner_login_name 是 sysname,預設值是 NULL,表示排程是建立者所擁有。

  • [ @schedule_uid= ] schedule_uidOUTPUT
    排程的唯一識別碼。 schedule_uid 是 uniqueidentifier 類型的變數。

  • [ @schedule_id= ] schedule_idOUTPUT
    排程的識別碼。 schedule_id 是 int 類型的變數。

  • [ @originating_server= ] server_name
    僅供參考之用。不支援。我們無法保證未來的相容性。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

備註

SQL Server Management Studio 提供了一種簡單的圖形方式供您管理各項作業,建議您利用這個方式來建立和管理作業基礎結構。

權限

依預設,只有系統管理員 (sysadmin) 固定伺服器角色的成員,才能夠執行這個預存程序。 其他使用者必須被授與 msdb 資料庫的下列其中一個 SQL Server Agent 固定資料庫角色。

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

如需有關這些角色權限的詳細資料,請參閱<SQL Server Agent 固定資料庫角色>。

範例

A.建立排程

下列範例會建立一份名稱為 RunOnce 的排程。 這份排程會在建立排程當日的 23:30 執行一次。

USE msdb ;
GO

EXEC dbo.sp_add_schedule
    @schedule_name = N'RunOnce',
    @freq_type = 1,
    @active_start_time = 233000 ;

GO

B.建立一份排程,將排程附加至多項作業

下列範例會建立一份名稱為 NightlyJobs 的排程。 每天伺服器時間到了 01:00 時,就會開始執行使用這份排程的作業。 這個範例會將排程附加至 BackupDatabase 作業和 RunReports 作業上。

[!附註]

這個範例假設 BackupDatabase 作業和 RunReports 作業都已經存在。

USE msdb ;
GO

EXEC sp_add_schedule
    @schedule_name = N'NightlyJobs' ,
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 010000 ;
GO


EXEC sp_attach_schedule
   @job_name = N'BackupDatabase',
   @schedule_name = N'NightlyJobs' ;
GO

EXEC sp_attach_schedule
   @job_name = N'RunReports',
   @schedule_name = N'NightlyJobs' ;
GO

請參閱

參考

SQL Server Agent 預存程序 (Transact-SQL)

sp_add_jobschedule (Transact-SQL)

sp_update_schedule (Transact-SQL)

sp_delete_schedule (Transact-SQL)

sp_help_schedule (Transact-SQL)

sp_attach_schedule (Transact-SQL)

概念

建立及附加排程至作業

排程作業

建立排程