Нотификация о изменении данных в MS SQL 2000

  • Автор темы Автор темы Barmutik
  • Дата начала Дата начала
B

Barmutik

Подскажите реализуем ли следующий механизм:

Я хочу что бы моя программа клиент узнавала об изменениях в какой-то конкретной таблице на сервере. Например в таблицу добавилась запись и клиент об этом узнал и произвёл требуемые ему действия.

Понятно что можно раз в интервал сканить таблицу .. но это не вариант ...
 
Одним триггером тут не обойдешься, нужно алерт выдавать, вопрос в том как... Лучше конечно вообще такого избегать по возможности (нотификации клиентов и прочее)
 
Что тригер то понятно .. вопрос как оповестить клиента .. такая возможность реализована в Interbase ... ну понятно что её сами борляндовцы писали ... но как сделать это в MS SQL Server 2000 ?

Единственное что мне пока пришло в голову так это из тригера вызывать мой Com-объект а из него потом уже нотифицировать клиентов своими средствами.. но какой-то не правильный путь как мне кажется .. может есть что-то более правильное ?

Что избегать оно конечно может и лучше .. но а всё таки ? Задача потенциально требует извещения клиентов...
 
Barmutik
Единственное что мне пока пришло в голову так это из тригера вызывать мой Com-объект а из него потом уже нотифицировать клиентов своими средствами.. но какой-то не правильный путь как мне кажется .. может есть что-то более правильное ?
а что смущает? пользуйся тогда рассылкой мэйлов :)
 
Да в принципе ничего ... просто думалсь что может есть какой более правильный способ клиенту сказать...

Просто так надо опять же делать менеджер соединений.. который будет искать своих активных клиентов и им потом рассылать что данные изменились ... мне просто казалось что проблема достаточно банальна и явно же её люди нераз решали и возможно есть более красивое решение.

Тогда вопрос до кучи:

Можно ли у MS SQL сервера узнать список активных клиентов для конкретной базы? В смысле имена или IP адреса машин откуда они подключились ?
 
Barmutik
Можно ли у MS SQL сервера узнать список активных клиентов для конкретной базы? В смысле имена или IP адреса машин откуда они подключились ?
А как же без этого? Должно быть точно. Я не могу проверить - у меня Оракл, но должно быть.
Просто так надо опять же делать менеджер соединений.. который будет искать своих активных клиентов и им потом рассылать что данные изменились ...
Вешай триггер на логон из которого запускается твой КОМ и бомбит определенную машину, пока приложение не скажет ему хватит ;)
люди нераз решали и возможно есть более красивое решение.
в MSSQL есть Microsoft Notification Services - что за звери - не знаю, но в MSDN'е описаны. может их тоже можнго применить?
 
Можно попробовать в конце триггера RAISERROR с низким уровнем значимости Severity Levels от 0 до 19, а в проге ловить Exception. Сам не пробовал,но как вариант.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!