sp_add_schedule (Transact-SQL)

適用於:SQL ServerAzure 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為 ,而且可以是下列其中一個值。

Description
1 一次
4 每日
8 每週
16 每月
32 每月,相對於 @freq_interval
64 當 SQL Server Agent 服務啟動時執行
128 當電腦閒置時執行 (Azure SQL 受控執行個體 中不支援

[ @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 = Weekday
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 First
2 Second
4 Third
8
16 姓氏

[ @freq_recurrence_factor = ] freq_recurrence_factor

排程執行作業之間的周數或月數。 只有在 @freq_type 為 、 或 時,才會使用@freq_recurrence_factor16328 @freq_recurrence_factor為 int,預設值為 0

[ @active_start_date = ] active_start_date

作業執行開始的日期。 @active_start_date為 int,預設值NULL為 ,表示今天的日期。 日期格式為 yyyyMMdd。 如果 @active_start_date 不是 NULL,日期必須大於或等於19900101。

建立排程之後,請檢閱開始日期,並確認其為正確的日期。 如需詳細資訊,請參閱建立和附加排程至作業中的一節。

對於每周或每月排程,Agent 會 忽略過去@active_start_date ,而改用目前的日期。 使用 sp_add_schedule 建立 SQL Server Agent 排程時,可以選擇指定參數 @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_uid OUTPUT

排程的唯一標識碼。 @schedule_uid是 uniqueidentifier 類型的變數。

[ @schedule_id = ] schedule_id OUTPUT

排程的標識碼。 @schedule_id是int類型的變數。

[ @originating_server = ] server_name

僅供參考之用。 不支援。 我們無法保證未來的相容性。

傳回碼值

0 (成功)或 1 (失敗)。

結果集

無。

備註

SQL Server Management Studio 提供易用的作業管理圖形介面,是建立及管理作業基礎結構的建議方式。

權限

此預存程式是由 db_owner 角色所擁有。 您可以授與 EXECUTE 任何用戶的許可權,但這些許可權可能會在 SQL Server 升級期間覆寫。

其他用戶必須在資料庫中獲得下列其中一個 SQL Server Agent 固定資料庫角色 msdb

  • 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

注意

此範例假設作業和作業BackupDatabaseRunReports已經存在。

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