sp_add_schedule (Transact-SQL)
適用於:SQL Server Azure 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 = Weekday10 = 週末日 |
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_factor。16
32
8
@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
。
注意
此範例假設作業和作業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