CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

如何编写自动(定时)执行的存储过程?

楼主closeme()2003-09-04 17:49:55 在 MS-SQL Server / 疑难问题 提问

小弟要写一个定时统计表中数据的存储过程,但不知道如何做,那位大哥能告知,不胜感激! 问题点数:30、回复次数:8Top

1 楼kinglh(用Delphi想BCB)回复于 2003-09-04 17:59:03 得分 0

是用什么数据库!  
   
  是SQL2000数据库可以用"作业"来完成.Top

2 楼klan(因帅被判7年)回复于 2003-09-04 18:11:54 得分 0

用job  
   
  最简单的方法就是在企业管理器中:tools   =>   Job   secheduingTop

3 楼friendliu(无为)回复于 2003-09-04 18:12:32 得分 0

先写好存储过程  
  然后做JOB定时调用它Top

4 楼w_rose(w_rose)回复于 2003-09-04 18:59:01 得分 0

你会用   osql   命令行执行一个   SQL   命令吗?  
   
  如果会,就好办了。在   Windows的   “计划执行”里边增加一项定时任务(使用DOS的AT命令也行),运行这个   osql   命令行。  
   
  SQL   Server   Agent中的JOB还是弱的。为了这么简单的一件事,启动那个服务、搞一大堆程序,太笨拙。Top

5 楼txlicenhe(马可)回复于 2003-09-04 19:09:20 得分 0

1:  
    写一个统计表中的存储过程  
  2:用Job来调度此存储过程。  
   
  EXEC   sp_add_job   @job_name   =   '作业名字'  
   
   
  EXEC   sp_add_jobstep   @job_name   =   '作业名字',  
        @step_name   =   '步骤名子',  
        @subsystem   =   'TSQL',  
        @command   =   'EXEC   库名..过程名',    
        @retry_attempts   =   5,   --重试次数  
        @retry_interval   =   5     --重试间隔  
   
  EXEC   sp_add_jobschedule   @job_name   =   '作业名字',    
        @name   =   '作业调度名字',  
        @freq_type   =   4,   --   每天  
        @freq_interval   =   26,   --间隔  
        @active_start_time   =   10000   --开始时间  
   
  Top

6 楼nboys()回复于 2003-09-04 20:12:18 得分 30

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   进行输入。  
  Top

7 楼nboys()回复于 2003-09-04 20:12:33 得分 0

此示例假设已经创建用来备份数据库的   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  
   
   
  请参见Top

8 楼closeme()回复于 2003-09-05 00:09:32 得分 0

谢谢各位大哥(大姐)  
  呵呵  
  向全部给分,可惜不行,告诉我怎么给,下次一定统统给分Top

相关问题

  • 怎样定时自动执行某一个存储过程呢?
  • 如何让sql自动定时执行某个存储过程
  • 求教!如何在某一特定时间让存储过程自动被执行??
  • 请问怎么在aix环境中自动定时运行DB2的存储过程!
  • 存储过程是如何编写的?
  • 自动编号的存储过程
  • 十万火急:SQL Server 2000下编写一个存储过程,以自动插入大量测试数据,规则内详
  • oracle中有定时执行存储过程的功能吗?
  • 如何让存储过程定时执行
  • 请问存储过程可不可以定时运行?

关键词

  • 作业
  • active
  • 执行
  • 数据
  • 存储过程
  • date
  • start
  • 数据库
  • freq
  • interval

得分解答快速导航

  • 帖主:closeme
  • nboys

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo