代码之家  ›  专栏  ›  技术社区  ›  TcKs

具有精确计时的SQL Server作业

  •  1
  • TcKs  · 技术社区  · 15 年前

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

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

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

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

    我可以用SQL Server功能来完成吗?或者我应该创建一个Windows服务来重复执行游戏循环过程?还是我该换个方向?

    谢谢!

    编辑:

    游戏循环存储过程所用的时间小于间隔。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Shiraz Bhaiji    14 年前

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

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

        2
  •  0
  •   Dalex    14 年前

    要以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'