2009년 8월 2일 일요일

작업스케쥴러 초단위 실행

제대로 돌아갈려나..--;

 

declare @run_sec as int
declare @sec as int
declare @run_time as int
declare @run as int
declare @delay as int
declare @stime as varchar(23)
declare @etime as varchar(23)
declare @ftime as datetime
declare @dtime as varchar(16)


set @run = 0
set @sec = 60
set @run_sec = 3
set @run_time = @sec / @run_sec

set @stime =  convert(varchar(23), getdate(), 121)
set @etime =  convert(varchar(23), dateadd(second, @sec - @run_sec, @stime), 121)


print @stime
print @etime

while @run < @run_time
begin
 if @etime > @stime
 begin
  set @stime = convert(varchar(23), getdate(), 121)

  set @dtime = '00:00:0' + convert(varchar, convert(int, rand() * @run_sec))
  waitfor delay @dtime

  set @ftime = convert(varchar(32), getdate(), 121)
  set @delay = datediff(second, @stime, @ftime)

  if @delay > 0
  begin
   if @run + 1 < @run_time
   begin
    set @dtime = '00:00:0' + convert(varchar, @run_sec - @delay)
    waitfor delay @dtime
   end
  end
  else
  begin
   if @run + 1 < @run_time
   begin
    set @dtime = '00:00:0' + convert(varchar, @run_sec)
    waitfor delay  @dtime
   end
   
  end

  print convert(varchar, @delay) + ' ' + convert(varchar, getdate(), 121)
 end
 else
 begin
  print 'else: ' + @stime
  print 'else: ' + @etime
 end
 
 set @run = @run + 1
end

댓글 없음:

댓글 쓰기