具有精确计时的SQL Server作业

时间:2010-05-11 09:26:01

标签: sql-server-2008 architecture scheduling

我有一个包含游戏数据的数据库(地图,玩家等等),我有一个用T-SQL存储过程编写的游戏核心机制。

我需要每隔“X”秒进行一次过程游戏循环(通过存储过程)。

我尝试使用SQL作业,但是当我将间隔设置为秒时,SQL服务器停止响应。如果我将间隔设置为大于一分钟,则一切正常。

我需要及时精确的游戏循环,例如游戏循环只运行一次,并且每隔“X”精确执行一次(公差应该小于一秒)。

我可以使用SQL Server功能吗?或者我应该创建一个重复执行游戏循环过程的Windows服务?或者我应该采取另一种方式?

谢谢!

修改

游戏循环存储过程花费的时间少于间隔。

2 个答案:

答案 0 :(得分:1)

我会为此使用Windows服务。有一个线程睡眠的循环让它等待每x秒。

SQL Server中使用的类型的计时器作业的问题是,有一个计时器服务检查是否有需要运行的作业。此计时器作业可能每隔2分钟检查一次,因此无法精确到一秒钟。

答案 1 :(得分:0)

要以1秒的间隔运行smth,您可以使用代码:

CREATE PROCEDURE SP_Execute_job 
AS 
    WHILE 1=1
    BEGIN
     WAITFOR DELAY '00:00:01'
     EXECUTE 'somewhat job'
    END
END

应在每个SQL Server启动后执行此sp:

exec sp_procoption N'SP_Execute_job', 'startup', 'on'