適用於: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為 tinyint,預設值1為 (已啟用)。 如果 0為 ,則不會啟用排程。 未啟用排程時,不會在此排程上執行任何作業。
@freq_type [ = ] freq_type
值,指出何時要執行作業。
@freq_type為 int,預設值0為 ,而且可以是下列其中一個值。
| 值 | 說明 |
|---|---|
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 = 工作日10 = 週末日 |
64 (SQLServerAgent 服務啟動時) |
@freq_interval未使用。 |
128 |
@freq_interval未使用。 |
@freq_subday_type [ = ] freq_subday_type
指定@freq_subday_interval的單位。
@freq_subday_type為 int,預設值0為 ,而且可以是下列其中一個值。
| 值 | 描述(單位) |
|---|---|
1 |
在指定的時間 |
2 |
秒 |
4 |
分鐘 |
8 |
小時 |
@freq_subday_interval [ = ] freq_subday_interval
每個作業執行之間要發生的@freq_subday_type期間數。
@freq_subday_interval為 int。 間隔長度必須至少為10秒。
在@freq_subday_type等於 的情況下1。
@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 為 、 或 時,才會使用@freq_recurrence_factor。8
@freq_recurrence_factor為 int。
@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 輸出
排程的唯一標識碼。 @schedule_uid是 uniqueidentifier 類型的變數。
@schedule_id [ = ] schedule_id輸出
排程的標識碼。 @schedule_id是int類型的變數。
@originating_server [ = ] server_name
僅供參考之用。 不支援。 我們無法保證未來的相容性。
傳回碼值
0 (成功) 或 1 (失敗)。
結果集
無。
備註
SQL Server Management Studio 提供易用的作業管理圖形介面,是建立及管理作業基礎結構的建議方式。
權限
您可以授與此 EXECUTE 程序的許可權,但這些許可權可能會在 SQL Server 升級期間覆寫。
其他用戶必須在資料庫中獲得下列其中一個 SQL Server Agent 固定資料庫角色 msdb :
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
如需這些角色權限的詳細資訊,請參閱 SQL Server Agent 固定資料庫角色。
範例
A。 建立排程
下列範例會建立名為的 RunOnce排程。 排程會在建立排程當天執行一次 23:30 。
USE msdb;
GO
EXECUTE 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
EXECUTE sp_add_schedule
@schedule_name = N'NightlyJobs',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 010000;
GO
EXECUTE sp_attach_schedule
@job_name = N'BackupDatabase',
@schedule_name = N'NightlyJobs';
GO
EXECUTE sp_attach_schedule
@job_name = N'RunReports',
@schedule_name = N'NightlyJobs';
GO