UP
UP
UP
没有人知道吗?还是太慢了没有回答问题了?

解决方案 »

  1.   

    Microsoft SQL Server提供了WAITFOR,允许开发人员给定一个时间,时间段,或者事件来触发一个语句块、存储程序或者事务的执行。这是Transact-SQL对于Oracle中dbms_lock_sleep的等价。WAITFOR {DELAY 'time' | TIME 'time'}指示Microsoft SQL Server等待直到给定的时间过去以后再执行,最多可以到24小时。在这里DELAY 
    指示Microsoft SQL Server等待,直到给定数量的时间过去以后才执行,最多可以设置到24小时。'time' 
    需要等待的时间,时间可以是任何可接受的datetime数据类型的格式,或者可以作为一个本地变量给出。但是,不能指定datetime值的日期部分。TIME 
    指示SQL Server等到指定的时间例如:BEGIN
    WAITFOR TIME '22:20'EXECUTE update_all_statsEND 
      

  2.   

    我没太明白你的意思,我按你的方法试了一下,也就是说,在我给定的时间它来运行这个存储过程,但是这个语句自身又在什么地方存在呢,而且好象在这个WaitFor给定的时间之前其它的东西是不运行的,可我这个数据库服务器是不能停的!
      

  3.   

    ORACLE中有DBMS_JOB包可以用来管理作业,可以达到你的目的:通过脚本建立作业,服务器重做后,再执行这个脚本重建作业。
    SQL SERVER 应该可以实现同样的功能。
      

  4.   

    这是ORACLE上的一个脚本:
    -- Created on 2002-7-2 by ADMINISTRATOR 
    declare 
      -- Local variables here
      v_jobnum  number;
    begin
      -- Test statements here
      dbms_job.submit(v_jobnum,'gbgl_fcjysgctz;',sysdate,'LAST_DAY(LAST_DAY(SYSDATE)+1)');
      dbms_output.put_line('job '||v_jobnum||' has been submitted.');
      --dbms_job.run(v_jobnum,TRUE);
      --dbms_job.run(7,TRUE);
    -- DBMS_JOB.REMOVE(6);
      COMMIT;
    end;
    submit 方法:建立一个作业,执行存储过程gbgl_fcjysgctz,执行时间是每月的最后一天,v_jobnum返回所建立的作业号。
    run方法:手动执行这个作业。
    remove方法:删除作业。
    用select * from user_jobs 可以看到所建立的作业的相关信息:
    作业号,所属用户,上次执行时间,时间间隔,下次执行时间,执行什么等等。
    SQL SERVER中应该有类似的东西。
      

  5.   

    To : hjd_cw() (  ) 信誉

    WAITFOR TIME '22:20'
    EXECUTE update_all_stats
    放在存储过程里,我还是没明白又是什么时候来执行这个存储过程呢??