Очередь SQL, выполните SP в будущем - PullRequest
0 голосов
/ 19 октября 2010

Я использую SQL Server 2005 ...

Я хочу отслеживать table1 с триггером для обновления.При появлении этого обновления я проверю другую таблицу (table2), используя данные из table2, я помещаю элемент в очередь для выполнения с переменной датой в будущем.Может быть через 10 секунд или 2 часа, эта дата определяется из проверки данных в таблице2.Существует вероятность того, что триггер для table1 может снова выполнить, прежде чем элемент, помещенный в очередь, будет обработан.В этом случае элемент в очереди необходимо удалить, а новый элемент будет помещен в очередь.

Процесс:

table1 обновляет триггеры table1 и запрашивает table2, чтобы определитьметка времени.Эта временная метка и код добавляются в очередь.Что-то контролирует эту очередь и выполняет код в определенное время.Если таблица1 обновляется до того, как элемент извлекается из очереди, этот элемент удаляется, и в очередь добавляется новый элемент.

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

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

Ответы [ 2 ]

0 голосов
/ 19 октября 2010

Задания агента SQL-Server обычно используются для выполнения задач в определенную дату / время.Я думаю, что можно создать или изменить задание с помощью sp, чтобы вы могли использовать их в триггере.С другой стороны, могут быть некоторые проблемы с разрешениями.Пользователь, который запускает триггер, должен иметь разрешение на создание / изменение задания.

0 голосов
/ 19 октября 2010

Вы смотрели на SQL Server Service Broker ?

Учебники Service Broker

ОБНОВЛЕНИЕ : Вы можете установитьприоритет сообщения, но я не думаю, что вы можете извлекать данные к определенной дате.За исключением того, что по определению, если вы поместите два сообщения в очередь, самое старое сначала «выскочит» из очереди, то есть они будут удалены в порядке возрастания дат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...