本主題介紹了如何使用存儲過程修改 Microsoft SQL Server 代理主作業。
更改作業定義計划的詳細信息
在作業中添加、更改或刪除步驟
1. 執行 sp_add_jobstep 來添加新的作業步驟。
2. 執行 sp_update_jobstep 來更改原先存在的作業步驟。
3. 執行 sp_delete_jobstep 來刪除原先存在的作業。
修改與作業相關聯的目標服務器
1. 執行 sp_delete_jobserver 來刪除當前與作業相關聯的服務器。
2. 執行 sp_add_jobserver 將某個服務器與當前作業相關聯。
sp_add_schedule (Transact-SQL)
更新日期: 2007 年 2 月 1 日
創建一個可由任意數量的作業使用的計划。
語法
|
|
| 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 |
在指定的時間 |
| 0x4 |
分鍾 |
| 0x8 |
小時 |
[ @freq_subday_interval = ] freq_subday_interval
每次執行作業之間出現的 freq_subday_type 期間數。freq_subday_interval 為 int,默認值為 0。在 freq_subday_type 等於 1 的情況下將忽略 freq_subday_interval。
[ @freq_relative_interval = ] freq_relative_interval
如果 freq_type 為 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 為 8、16 或 32 時,才會使用 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_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
保留為僅供 SQL Server 內部使用。不保證以后的兼容性。
返回代碼值
0(成功)或 1(失敗)
結果集
無
備注
SQL Server Management Studio 為管理作業提供了一種圖形化的簡便方法,建議使用此方法來創建和管理作業基礎結構。
權限
默認情況下,只有 sysadmin 固定服務器角色的成員才可以執行此存儲過程。其它用戶必須被授予 msdb 數據庫中下列 SQL Server 代理固定數據庫角色的權限之一:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
有關這些角色的權限的詳細信息,請參閱 SQL Server 代理固定數據庫角色。
示例
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 2005 聯機叢書(2007 年 9 月)
sp_update_schedule (Transact-SQL)
更改 SQL Server 代理計划的設置。
語法
|
|
| sp_update_schedule { [ @schedule_id = ] schedule_id | [ @name = ] 'schedule_name' } [ , [ @new_name = ] new_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' ] [ , [ @automatic_post =] automatic_post ] |
參數
[ @schedule_id = ] schedule_id
要修改的計划的標識符。schedule_id 的數據類型為 int,無默認值。必須指定 schedule_id 或 schedule_name。
[ @name = ] 'schedule_name'
要修改的計划的名稱。schedule_name 的數據類型為 sysname,無默認值。必須指定 schedule_id 或 schedule_name。
[ @new_name= ] new_name
計划的新名稱。new_name 的數據類型為 sysname,默認值為 NULL。如果 new_name 為 NULL,則不更改計划名稱。
[ @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,默認值為 0,該值取決於 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。
[ @freq_relative_interval = ] freq_relative_interval
freq_interval 為 32(與“每月”選項相關)時,每月中作業的 freq_interval 的執行頻率。freq_relative_interval 的數據類型為 int,默認值為 0,可以是下列值之一。
| 值 |
說明(單位) |
| 1 |
第一個 |
| 2 |
第二個 |
| 4 |
第三個 |
| 8 |
第四個 |
| 16 |
最后一個 |
[ @freq_recurrence_factor = ] freq_recurrence_factor
作業的兩次計划執行之間的間隔周數或月數。只有 freq_type 為 8、16 或 32 時,才會使用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_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,指示計划由創建者擁有。
[ @automatic_post =] automatic_post
保留。
返回代碼值
0(成功)或 1(失敗)
備注
所有使用該計划的作業將立即使用新設置。但是,更改計划不會停止當前正在運行的作業。
權限
默認情況下,只有 sysadmin 固定服務器角色的成員才可以執行此存儲過程。其它用戶必須被授予 msdb 數據庫中下列 SQL Server 代理固定數據庫角色的權限之一:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
有關這些角色的權限的詳細信息,請參閱 SQL Server 代理固定數據庫角色。
只有 sysadmin 的成員才可以修改其它用戶擁有的計划。
