SQL SERVER代理作业间隔到秒级解决方案
作者:敖士伟 ikmb@163.com
SQL SERVER代理作业间隔最小到分。
一、网上流传的方案:
建一个每分钟的作业再加上While+wait for
如:
declare @i int
set @i=0
while @i<2
begin
exec('delete from tbMSG where datediff(s,dt_MSG_InsertTime,getdate())>120')
waitfor delay '00:00:30'
set @i=@i+1
end
问题:这个方案看起来是没什么问题,但是会导致整个作业每两分钟执行一次。
二、
我的笨方案:
每一分钟要执行几次就写几个独立作业,再结合wait for
如:每20s执行一次:
1.delete from tbMSG where datediff(s,dt_MSG_InsertTime,getdate())>30
2.waitfor delay '00:00:20'
delete from tbMSG where datediff(s,dt_MSG_InsertTime,getdate())>30
3. waitfor delay '00:00:40'
delete from tbMSG where datediff(s,dt_MSG_InsertTime,getdate())>30
SQL SERVER代理作业默认间隔最小为分钟级别,本文介绍了两种实现秒级间隔的解决方案:1) 使用While循环和waitfor delay,但可能导致作业整体每两分钟执行一次;2) 创建多个独立作业结合waitfor delay,按需定制执行间隔。
2052

被折叠的 条评论
为什么被折叠?



