Главная » Получение уведомлений MS SQL сервера в С++ Builder
В клиент-серверных задачах порою требуется получить по некоемому событию на SQL сервере уведомление на клиенте, при этом не опрашивая о случившихся изменениях. Реализовать данную функциональность возможно с использованием расширенной хранимой процедуры (extended stored procedure), представляющей из себя динамически подключаемую библиотеку, которая через сокеты по протоколу UDP будет рассылать бродкаст (broadcast) пакеты по сети. Следует отметить, что протокол UDP не гарантирует доставку сообщения, но и не требует установления соединения, как скажем TCP, что является решающим при выборе способа доставки.
    Простейшим примером использования механизма уведомления, является генерация события отсылки оповещения из триггера таблицы аудита пользователей при добавлении новой записи. Таблица, именуемая EVENTS, имеет структуру состоящую из уникального идентификатора записи, логина пользователя и информационного сообщения, о котором надо уведомить всех заинтересованных подписчиков. Расширенная процедура "xp_event" может иметь следующие входные параметры: , , , ,. В качестве имени хоста можно задать широковещательный адрес, к примеру, 223.1.2.255 или 255.255.255.255, а можно и просто сетевое имя машины локальной сети. Номер порта произволен, по умолчанию на клиенте для прослушивания используется порт 3338. 
    Компонент TSQLAlerter  имеет два метода: Start и Stop, которые соответственно создают новый процесс для прослушивания порта и останавливают его, т.е. клиент выступает в роли UDP сервера. Событие OnGetMessage наступает в момент получения  оповещения, а указатель на визуальный компонент TLabel позволяет визуализировать полученное сообщение на форме. Пример регистрации процедуры и реализации отсылки уведомления можно посмотреть в скрипте TSQLAlerter.sql. Категория: Языки программирования | Просмотров: 163