作业是指被定义的多步执行的任务每一步都是可能执行的Transact-SQL 语句代表
一个任务作业是典型的规划任务和自动执行任务数据库的备份和恢复数据的复制
数据的导入/导出等都可以被定义成作业然后在规划的时间由SQL Server Agent 来自动
完成创建一个作业的执行步骤为
1 启动SQL Server Enterprise Manager 登录到指定的服务器分别顺次单击
management SQL Server Agent 左边的+ 如果SQL Server Agent 没
有启动请启动
2 右击Jobs 图标在弹出菜单中选择New Job 选项打开New Job Properties
对话框如图17-8 所示
图17-8 New Job Properties 对话框– General 标签页
在该对话框内通过选择不同的标签页来设置作业的属性每个作业都包括以下属性
Name Category Owner Description Job steps Schedules Notifications
3 在General 标签页定义了作业的Name Category Owner Description 属性
各选项含义如下
  Name 是指作业的名称同一台服务器上的作业名必须是惟一的其最大长度
为128 个字符
  Category 表示作业目录可以将那些具有某些共同点的作业归至同一作业目录

  Owner 表示作业的所有者sysadmin 角色用户可以改变作业的所有者
  Description 表示对作业的描述信息最大长度为512 个字符
  Last modified 表示作业上一次修改的时间如果是新创建的作业则为Not
Applicable
  Enabled 表示作业有效否则必须手工启动
  Source 用来显示作业是在哪台服务器上创建的
  Target local server 表示作业在本地服务器上运行
  Target Multiple server 表示在多个过程服务器上运行
4 选择Steps 标签然后单击New 按钮打开New Job Steps 对话框如图17-
9 所示General 标签页内各选项的含义如下
图17-9 New Job Steps 对话框– General 标签页
  Step name 步骤名称其长度不超过128 个字符一个作业内的步骤名必须惟一
  Type 步骤的类型该下拉框内各选项的含义分别为
?Active Script 运行一个脚本语言程序
?Operation System Command (Cmd Exec) 执行.exe .cmd .bat 文件
?Replication Distributor 定义复制分发命令
?Replication Transaction Log Reader 定义复制日志阅读器命令
?Replication Merge 定义复制合并命令
?Replication Snapshot 定义复制快照命令
?Replication Transact-SQL Script (TSQL) 执行TSQL 语句命令
  Database 当作业步骤类型为TSQL 时所使用的数据库
  Command 该作业步骤要执行的命令
5 选择New Job Steps 对话框的Advanced 标签页如图17-10 所示其中各选
项的含义为
  On success Action 定义该步骤成功执行后将执行的活动其中下拉框中的各选
项的含义分别为
?Quit the Job Reporting Success 如果成功则结束作业
?Quit the Job Reporting Failure 如果失败则结束作业
?Goto the Next Step 让SQL Server Agent 去执行下一步
?Goto Step N 让SQL Server Agent 执行第N 步
图17-10 New Job Steps 对话框– Advanced 标签页
  Retry Attempts 如果该步执行失败则重新执行的次数
  Retry Interval 在重新执行前等待的时间
  On Failure Action 定义该步骤执行失败后将执行的活动
  Output File 存储该步骤执行结果的文件
  Run as User 允许系统管理员以另外的用户身份来执行这一步作业
6 选择Schedules 标签页然后单击New Schedule 按钮如图17-11 所示其
中各选项含义分别为
图17-11 New Job Schedule 对话框
  Name 日程表的名称在Schedule Type 选项区设置作业执行的频率和时间
  Start automatically when SQL Server Agent Start 表示在SQL Server Agent Start 启
动时执行该作业
  Start whenever the CPU(s) become idle 表示在CPU 空闲时执行该作业在缺省
情况下空闲的含义是指CPU 的利用率低于10% 持续时间为6 分钟可在SQL
Server Agent Properties 对话框的Advance 标签页进行设置
  One time 该作业执行一次
  Recuring 按一定时间间隔执行该作业
如果选择Recurring 选项则可单击Change 按钮打开Edit Recurring Job Schedule 对
话框如图17-12 所示在该对话框中设置作业的日程表
图17-12 Edit Recurring Job Schedule 对话框
7 返回New Job Properties 对话框选择Notifications 标签页如图17-13 所示
其中各选项的含义为
图17-13 New Job Properties 对话框- Notifications 标签页
  E-mail operator 在作业完成时表示以电子邮件方式通知操作员在右面的下拉
框中选择操作员
  Page operator 在作业完成时以寻呼方式通知操作员在右面的下拉框中选择操
作员
  Net send operator 在作业完成时通过网络发送网络信息通知操作员在右面的下
拉框中选择操作
  Write to Windows NT application event log 在作业完成时将完成的作业写入NT
应用事件日志
  Automatically delete Job 在作业完成时自动删除该作业
8 单击确定按钮完成作业的创建

解决方案 »

  1.   


    sp_add_jobschedule
    创建作业调度。语法
    sp_add_jobschedule [ @job_id = ] job_id, | [ @job_name = ] 'job_name',
        [ @name = ] '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 ]参数
    [ @jobid = ] job_id将向其中添加调度的作业的作业标识号。job_id 的数据类型为 uniqueidentifier,默认设置为 NULL。[ @job_name = ] 'job_name'作业的名称,调度即添加到该作业中。job_name 的数据类型为 sysname,默认设置为 NULL。说明  必须指定 job_id 或 job_name,但不能两个都指定。
    [ @name = ] 'name'调度的名称。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,默认设置为 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 在指定的时间 
    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 进行输入。返回代码值
    0(成功)或 1(失败)结果集
    无注释
    SQL Server 企业管理器提供易于使用的图形方法来管理作业,建议使用该方法创建和管理作业基本结构。权限
    执行权限默认授予 public 角色。示例
    此示例假设已经创建用来备份数据库的 NightlyBackup 作业。它将作业添加到名为 ScheduledBackup 的调度中,并且在每天上午 1:00 执行。USE msdb
    EXEC sp_add_jobschedule @job_name = 'NightlyBackup', 
       @name = 'ScheduledBackup',
       @freq_type = 4, -- daily
       @freq_interval = 1,
       @active_start_time = 10000 
      

  2.   

    用C#写一个WINDOWS服务。另外,既然是数据库满足某个条件才发邮件,那一定是数据库发生某种改变的时候才可能会满足条件。那你就可以在用户的请求导致对数据库修改的时候检查是否满足条件,以决定是否发送邮件。这样就不需要一个后台的服务,而仅当用户的操作导致数据库可能会发生满足条件的改变的时候才检查数据库。