SQL Server Job с точным временем - PullRequest
1 голос
/ 11 мая 2010

У меня есть БД с игровыми данными (карта, игроки и т. Д.), И у меня есть механика ядра игры, написанная на хранимой процедуре T-SQL.

Мне нужно обрабатывать игровой цикл (через хранимую процедуру) каждые «X» секунд.

Я пытался использовать задание SQL, но когда я установил интервал в секундах, сервер SQL перестает отвечать. Если установить интервал больше одной минуты, все будет хорошо.

Мне нужен игровой цикл, точный по времени, например игровой цикл будет запущен только один раз и будет выполняться каждый «X» точно (допуск должен быть менее одной секунды).

Могу ли я сделать это с возможностями SQL Server? Или я должен создать службу Windows, которая будет повторять процедуру игрового цикла? Или я должен пойти другим путем?

Спасибо!

EDIT:

Хранимая процедура игрового цикла занимает меньше интервала.

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Я бы использовал службу Windows для этого. Имейте цикл с нитью сна, чтобы заставить его ждать каждые x секунд.

Проблема с заданиями таймера типа, используемыми на сервере SQL, заключается в том, что существует служба таймера, проверяющая, нужно ли выполнить задание. Это задание таймера может проверяться, например, каждые 2 минуты, поэтому точность с точностью до секунды невозможна.

0 голосов
/ 04 мая 2011

Для запуска чего-либо с интервалом в 1 секунду вы можете использовать код:

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'
...