• 如何修改 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 的成员才可以修改其它用户拥有的计划。

  • 相关阅读:
    @SuppressWarnings("rawtypes") 是什么含义
    Oracle存在则更新,不存在则插入应用-merge
    word 2010中设置默认粘贴为 只保留文本粘贴【visio也适用于快捷键方式】
    List的remove()方法的三种正确打开方式
    纵表和横表的概念及其相互转换
    log4j.xml简单配置实现在控制台打印sql执行语句【加注释】
    NGUI例子Scroll View场景中item添加点击后自动滑到终点
    unity3d 日志捕捉
    Unity3D研究院之动态修改烘培贴图的大小&脚本烘培场景
    Unity3D研究之Prefab里面的Prefab关联问题
  • 原文地址:https://www.cnblogs.com/accumulater/p/6223912.html
Copyright © 2020-2023  润新知