Sql server 2008 具有精确计时功能的SQL Server作业

Sql server 2008 具有精确计时功能的SQL Server作业,sql-server-2008,architecture,scheduling,Sql Server 2008,Architecture,Scheduling,我有一个包含游戏数据(地图、玩家等)的数据库,还有一个用T-SQL存储过程编写的游戏核心机制 我需要每“X”秒处理一次游戏循环(通过存储过程) 我尝试使用SQL作业,但当我将间隔设置为秒时,SQL服务器停止响应。如果我将间隔设置为大于一分钟,则一切正常 我需要游戏循环在时间上精确,例如,游戏循环将只运行一次,并将每“X”精确执行一次(容差应小于1秒) 我可以用SQL Server功能来完成吗?或者我应该创建一个windows服务来重复执行游戏循环过程?还是我应该走另一条路 谢谢 编辑: 游戏循环

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

我需要每“X”秒处理一次游戏循环(通过存储过程)

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

我需要游戏循环在时间上精确,例如,游戏循环将只运行一次,并将每“X”精确执行一次(容差应小于1秒)

我可以用SQL Server功能来完成吗?或者我应该创建一个windows服务来重复执行游戏循环过程?还是我应该走另一条路

谢谢

编辑:


游戏循环存储过程占用的时间少于间隔。

为此,我将使用windows服务。有一个循环,其中有一个线程睡眠,让它每x秒等待一次


SQL server中使用的类型的计时器作业的问题在于,有一个计时器服务检查是否有需要运行的作业。例如,此计时器作业可能每2分钟检查一次,因此无法将精度降低到1秒。

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

CREATE PROCEDURE SP_Execute_job 
AS 
    WHILE 1=1
    BEGIN
     WAITFOR DELAY '00:00:01'
     EXECUTE 'somewhat job'
    END
END
此sp应在每次SQL Server启动后执行:

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

您的程序运行需要多长时间?如果时间超过一秒,我想你会遇到一些困难。这个过程需要一秒/两秒/三秒,但是时间应该总是比时间间隔短——这是正确系统功能的要求之一。也许更好的问题是——如果时间不超过一秒会发生什么(意外锁定、系统挂断)“帕迪:我明白你指的是什么了。然而,这不是问题所在。游戏循环并不复杂,无法实现无bug和无死锁(ehm:D)的情况。游戏循环是核心元素,游戏系统离不开它。你能用信息来代替吗,这样你就不会被时间束缚?我就是这样做的。它运行了几个星期,没有发生错误。因此,这可能是正确的解决方案。