如何修改 SQL Server 代理主作業 (Transact-SQL)


本主題介紹了如何使用存儲過程修改 Microsoft SQL Server 代理主作業。

 更改作業定義計划的詳細信息

1.       執行 sp_update_schedule

 在作業中添加、更改或刪除步驟

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   

創建一個可由任意數量的作業使用的計划。

 語法

 

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 為 816 或 32 時,才會使用 freq_recurrence_factorfreq_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 為 816 或 32 時,才會使用freq_recurrence_factorfreq_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 的成員才可以修改其它用戶擁有的計划。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM