我想每3秒运行一次作业,但是在SQL Server 2008中,我们不能将间隔定义为少于10秒。
该作业用于将访问者信息以及细分信息插入/更新到Google搜索所跟踪的数据库中。
2到3秒钟内最多插入约100行。该作业将插入并更新数据库中的表。有什么方法可以使用sp作业计划配置进行计划吗?
我想每3秒运行一次作业,但是在SQL Server 2008中,我们不能将间隔定义为少于10秒。
该作业用于将访问者信息以及细分信息插入/更新到Google搜索所跟踪的数据库中。
2到3秒钟内最多插入约100行。该作业将插入并更新数据库中的表。有什么方法可以使用sp作业计划配置进行计划吗?
Answers:
创建一个计划每分钟开始的作业。让工作执行以下操作:
WHILE 1=1
BEGIN
EXEC dbo.SomeProcedure; /* this would be the
name of a stored procedure that does the
actual work */
WAITFOR DELAY '00:00:03.000';
END
我认为这个答案是不正确的。原因如下:假设dbo.SomeProcedure将运行2秒钟,并在10:00:00 am开始,然后在此proc完成后,它将等待另外3秒钟,然后再次重新启动,即10:00:02 am ,它完成了,直到10:00:05 am才开始。如果我们真的可以安排一个作业每3秒运行一次,则dbo.SomeProcedure确实会在10:00:00 am和10:00:03 am运行,依此类推。更准确的一种应该是:
WHILE 1=1
BEGIN
EXEC dbo.SomeProcedure; /* this would be the
name of a stored procedure that does the actual work */
WHILE datediff(second, @dt, getdate())%3 <> 0
WAITFOR DELAY '00:00:00.100'; -- can be made it to '00:00:00.001'
END