开发者

SQL Server Job with precise timing

开发者 https://www.devze.com 2022-12-30 08:36 出处:网络
I have a DB with game data (map, players, etc...) and I have a game core mechanics written in T-SQL stored procedure.

I have a DB with game data (map, players, etc...) and I have a game core mechanics written in T-SQL stored procedure.

I need process game loop (via the stored procedure) every "X" seconds.

I tried used the SQL Job, but when I set the interval to seconds, the SQL server stops responding. If I set the interval greater than one minute, all was ok.

I need game loop precise in time, e.g. the game loop will run only once and will be executed every "X" precisely (tolerance should be less than one second).

Can I do it with SQL Server capabilities? Or should I create a windows service which will re开发者_运维问答peatly execute game loop procedure? Or should I go another way?

Thanks!

EDIT:

The game loop stored procedure takes less than the interval.


I would use a windows service for this. Have a loop with a thread sleep in it to get it to wait every x seconds.

The problem with timer jobs of type used in SQL server, is that there is a timer service checking if there is a job that need to be run. This timer job may check for example every 2 minutes, so precision down to a second is not possible.


To run smth with interval of 1 sec you can use code:

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

This sp should be executed after each SQL Server start:

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号