2010-05-11 5 views
1

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

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

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

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

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

Спасибо!

РЕДАКТИРОВАТЬ:

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

+2

Как долго ваша процедура потребуется для запуска? Полагаю, если это будет больше секунды, вы столкнетесь с некоторыми трудностями. – Paddy

+0

Процедура занимает второе/два/три, однако всегда требуется меньше интервала - это одно из требований к правильной функциональности системы. – TcKs

+0

Возможно, лучший вопрос будет: что произойдет, если это не произойдет (непредвиденная блокировка, зависание системы)? – Paddy

ответ

1

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

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

+0

Я сделал это именно так. Он работает в течение нескольких недель, и ошибки не происходит. Таким образом, это подходящее решение. – TcKs

0

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

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

Это зр должно выполняться после каждого запуска SQL Server:

exec sp_procoption N'SP_Execute_job', 'startup', 'on' 
Смежные вопросы