Вызов хранимой процедуры через настраиваемое количество часов после вставки - PullRequest
0 голосов
/ 10 января 2012

Я использую SQL Server 2008 Express и не могу купить полную версию, которой нет в бюджете.

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

Я думал об использовании планировщика Windows и запуске хранимой процедуры два раза в день, но если пользователь установит ее на выполнение менее 12 часов, это приведет к тому, что пользователь будет уведомлен два или более раз.Я также, конечно, не думаю, что разумно запускать его каждый час.Так что оба эти варианта не кажутся лучшими.

Мне было интересно, есть ли способ рассчитать что-то подобное или даже запланировать запуск в определенное время (используя экспресс-запоминание)

Любая помощь будет принята с благодарностью и спасибо за чтение!

Ответы [ 3 ]

1 голос
/ 10 января 2012

Использовать таймеры разговора .Во вставке вы запускаете таймер разговора, готовый к стрельбе по истечении заданного количества часов.По истечении времени система поставит сообщение в очередь, и вы можете использовать интервал активации для запуска необходимой процедуры, включая отправку сообщения.Преимущество этой реализации состоит в том, что она опирается только на функции SQL Express.Это также надежно, вы не потеряете уведомления, если процесс завершит работу, как это произошло бы с решением на основе CLR или WAITFOR.

См. Выполнение асинхронной процедуры для аналогичной идеи,но без таймера.

Даже если вы в конечном итоге будете делать проверки каждые часы (или каждые 5 минут) для ожидающих уведомлений «в срок», я все равно буду использовать механизм на основе активации компонента Service Broker для активации «проверки»'задача.Я также рекомендую прочитать Использование таблиц в качестве очередей .

0 голосов
/ 10 января 2012

Если вы можете использовать команду SQL Server WAITFOR, это может быть полезно.

Может быть, хранимая процедура sql, которая запускается каждый час, и проверяет, настроена ли она на выполнение в этот "час", если такзатем отправьте электронное письмо.

http://msdn.microsoft.com/en-us/library/ms187331.aspx

0 голосов
/ 10 января 2012

вы можете использовать проект CLR в визуальных студиях для достижения этой цели!

Триггер будет прослушивать любую вставку, выполненную на столе, и в ответ вызывать веб-службу, которая отправляет электронную почту.

...