Поднять событие из процедуры хранилища в службу Windows - PullRequest
1 голос
/ 12 января 2009

Возможно ли инициировать действие в службе Windows или возможно вызвать событие, которое может быть перехвачено в службе из хранимой процедуры.

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

У кого-нибудь есть идеи?

Спасибо

Ed

Ответы [ 4 ]

2 голосов
/ 12 января 2009

Похоже, вы вообще не должны использовать службу Windows. Я бы настроил задание SQL на запуск каждые 5 минут, затем настроил триггер или, как вы ожидаете, запуск задания в случае необходимости вручную.

EDIT: Однако, если служба делает что-то за пределами базы данных, вы можете использовать xp_cmdshell для запуска системных команд (хотя и не лучший вариант).

1 голос
/ 12 января 2009

Вы можете создать процедуру CLR в SQL Server, которая каким-либо образом взаимодействует со службой, используя SOAP, Remoting или любой другой носитель. Это общий характер. Я думаю, что функция уведомления о запросах в SQL Server 2005 может быть полезна здесь.

0 голосов
/ 17 февраля 2009

Исходя из комментариев Мехрдада, я смог решить эту проблему с помощью класса SqlDependancy в .NET Framework.

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

Это позволило мне почти мгновенно отследить изменения данных и обработать их соответствующим образом.

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

Хороший пример использования этого класса в приложении Windows можно найти здесь .

0 голосов
/ 12 января 2009

если вы совершаете ошибку raiserror (@ ErrorMessage, 16,1), она должна генерировать исключение на стороне клиента, если вы используете серьезность и состояние 16 и 1.

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