CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

可不可以让sql server 每隔一段时间自动执行一条sql语句?

楼主zjfzju(zjf)2003-12-02 15:57:12 在 MS-SQL Server / 基础类 提问

可不可以让sql   server   每隔一段时间自动执行一条sql语句?  
  如何实现 问题点数:0、回复次数:6Top

1 楼shuiniu(飞扬的梦)(我是一头只吃西红柿的水牛)回复于 2003-12-02 15:59:24 得分 0

WAITFOR  
  指定触发语句块、存储过程或事务执行的时间、时间间隔或事件。  
   
  语法  
  WAITFOR   {   DELAY   'time'   |   TIME   'time'   }  
   
  参数  
  DELAY  
   
  指示   Microsoft®   SQL   Server™   一直等到指定的时间过去,最长可达   24   小时。  
   
  'time'  
   
  要等待的时间。可以按   datetime   数据可接受的格式指定   time,也可以用局部变量指定此参数。不能指定日期。因此,在   datetime   值中不允许有日期部分。  
   
  TIME  
   
  指示   SQL   Server   等待到指定时间。    
   
  注释  
  执行   WAITFOR   语句后,在到达指定的时间之前或指定的事件出现之前,将无法使用与   SQL   Server   的连接。  
   
  若要查看活动的进程和正在等待的进程,请使用   sp_who。  
   
  示例  
  A.   使用   WAITFOR   TIME  
  下例在晚上   10:20   执行存储过程   update_all_stats。  
   
  BEGIN  
        WAITFOR   TIME   '22:20'  
        EXECUTE   update_all_stats  
  END  
   
  有关使用此过程更新数据库中所有统计的更多信息,请参见   UPDATE   STATISTICS   中的示例。    
   
  B.   使用   WAITFOR   DELAY  
  下例说明如何对   WAITFOR   DELAY   选项使用局部变量。将创建一个存储过程,该过程将等待可变的时间量,然后将所经过的小时、分钟和秒数信息返回给用户。  
   
  CREATE   PROCEDURE   time_delay   @@DELAYLENGTH   char(9)  
  AS  
  DECLARE   @@RETURNINFO   varchar(255)  
  BEGIN  
        WAITFOR   DELAY   @@DELAYLENGTH  
        SELECT   @@RETURNINFO   =   'A   total   time   of   '   +    
                                      SUBSTRING(@@DELAYLENGTH,   1,   3)   +  
                                      '   hours,   '   +  
                                      SUBSTRING(@@DELAYLENGTH,   5,   2)   +    
                                      '   minutes,   and   '   +  
                                      SUBSTRING(@@DELAYLENGTH,   8,   2)   +    
                                      '   seconds,   '   +  
                                      'has   elapsed!   Your   time   is   up.'  
        PRINT   @@RETURNINFO  
  END  
  GO  
  --   This   next   statement   executes   the   time_delay   procedure.  
  EXEC   time_delay   '000:00:10'  
  GO  
   
  下面是结果集:  
   
  A   total   time   of   000   hours,   00   minutes,   and   10   seconds,   has   elapsed!   Your   time   is   up.  
   
   
  Top

2 楼txlicenhe(马可)回复于 2003-12-02 15:59:48 得分 0

 
  你的数据库服务器-》企业管理器-》管理-》SQL   Server   代理-》作业-》新建作业,按照要求填就可以了,在“步骤”的“命令”中填写你要执行的存储过程或语句,在“调度”里面填写什么时间执行  
   
   
  EXEC   sp_add_job   @job_name   =   '作业名字'  
   
   
  EXEC   sp_add_jobstep   @job_name   =   '作业名字',  
        @step_name   =   '步骤名子',  
        @subsystem   =   'TSQL',  
        @command   =   '要执行的SQL语句',    
        @retry_attempts   =   5,   --重试次数  
        @retry_interval   =   5     --重试间隔  
   
  EXEC   sp_add_jobschedule   @job_name   =   '作业名字',    
        @name   =   '作业调度名字',  
        @freq_type   =   4,   --   每天  
        @freq_interval   =   26,   --间隔  
        @active_start_time   =   10000   --开始时间Top

3 楼zjcxc(邹建)回复于 2003-12-02 16:03:01 得分 0

--创建作业  
   
  --创建作业  
  exec   msdb..sp_add_job   @job_name='数据处理'  
   
  --创建作业步骤  
  declare   @sql   varchar(800),@dbname   varchar(250)  
  select   @sql='select   *   from   表'     --数据处理的命令  
  ,@dbname=db_name() --执行数据处理的数据库名  
   
  exec   msdb..sp_add_jobstep   @job_name='数据处理',  
  @step_name   =   '数据同步',  
  @subsystem   =   'TSQL',  
  @database_name=@dbname,  
        @command   =   @sql  
  @retry_attempts   =   5,   --重试次数  
  @retry_interval   =   5     --重试间隔  
   
  --创建调度  
  EXEC   msdb..sp_add_jobschedule   @job_name   =   '数据处理',    
        @name   =   '时间安排',  
        @freq_type   =   4,   --每天  
        @freq_interval   =   1, --每天执行一次  
        @active_start_time   =   00000 --0点执行  
   
   
  Top

4 楼zjcxc(邹建)回复于 2003-12-02 16:03:17 得分 0

企业管理器  
  --管理  
  --SQL   Server代理  
  --右键作业  
  --新建作业  
  --"常规"项中输入作业名称  
  --"步骤"项  
  --新建  
  --"步骤名"中输入步骤名  
  --"类型"中选择"Transact-SQL   脚本(TSQL)"  
  --"数据库"选择执行命令的数据库  
  --"命令"中输入要执行的语句  
  --确定  
  --"调度"项  
  --新建调度  
  --"名称"中输入调度名称  
  --"调度类型"中选择你的作业执行安排  
  --如果选择"反复出现"  
  --点"更改"来设置你的时间安排  
  Top

5 楼lansquenet(佣兵小队长)回复于 2003-12-02 16:05:12 得分 0

我只能看看啦Top

6 楼dlpseeyou(豆子)回复于 2003-12-02 16:09:32 得分 0

WAITFOR   TIME     '22:20'  
  Top

相关问题

  • SYBASE中SQL语句可不可以实现如下功能?
  • 这句sql语句可不可以优化?
  • 请教SQL语句中的JOIN可不可以嵌套?
  • 我的SQL语句太长了,可不可以分行?怎样分?
  • 可不可以在sql语句中加入if等判断语句?请举例谢谢
  • 求教一个高难度sql语句(不知道可不可以用sql实现)!
  • 用command添加参数更新sql数据库时,用的sql语句可不可以包含子查询?急!!
  • access中通过connection执行sql语句时可不可以把两句并一块,使用什么分隔?
  • 高手,大虾,这个SQL语句如何写呢,not in 可不可以对多个字段进行处理呢?????
  • 请问如果要实现这样的目的该怎么办?可不可以用两个SQL语句?

关键词

  • 语句
  • 执行
  • 作业
  • 存储过程
  • 数据库
  • sql
  • delaylength
  • waitfor
  • 指定
  • 数据处理

得分解答快速导航

  • 帖主:zjfzju

相关链接

  • SQL Server类图书

广告也精彩

反馈

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