Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL Server


Alex_Sudakov ©   (2002-01-19 13:29:00) 

Господа, подскажите, как из SQL сервера послать виндовое (а"ля WM_...) сообщение всем подключенным клиентам? Очень не хочется писать свой СОМ сервер...


Delirium   (2002-01-21 12:20:00) [1]

У меня есть такая dll-ка


Snake1967   (2002-01-21 11:31:00) [2]

Мне пришлось сделать в своей системе 2 варианта:
1) с помощью упомянутого выше вызова оформить стандартное сетевое оповещение типа:
select @scmd="net send Natalie Process finished!"
exec master..xp_cmdshell @scmd, NO_OUTPUT
Понятно, что такое сообщение (в буквальном смысле) можно только
прочитать.
2) для запуска с SQL-сервером других модулей и приложений написал:
- CORBA-объект (работает на другом компе в сети), который запускает объект с локального хоста или что-либо делает сам.
- CORBA-клиент к этому объекту, который вызывается SQL-сервером. Механизм вызова - тоже через exec master..xp_cmdshell , только вызывается CORBA-клиент.
Эта парочка не только передает сообщения в другие проги, но и позволяет распределенно исполнить бизнес-логику с помощью синхронных вызовов.

Есть, на мой взгляд, очень правильный способ решения этой задачи - написать свою extended stored prоcedure (которая может использовать любой транспортный механизм: CORBA, COM, сокеты, почту и т.п.). Однако, лень-матушка...


Praco   (2002-01-21 11:23:00) [3]

2Iluxa А зечем COM? Можно внешнюю хранимую процедуру.


Iluxa   (2002-01-21 11:06:00) [4]

(Про MSSQL) Напрямую никак, но можно написать COM-сервер, посылающий броадкастные сообщения по сети (напр. по UDP), зарегистрировать его на тачке с MSSQL (regsvr32 server_name.dll) и вызывать его методы из MS SQL (семейство системных хранимых процедур sp_OA...). На клиентских местах устанавливаешь простенький сервер UDP (предварительно написанный тобой же :), транслирующий полученные сообщения в сообщения мастдая (протокол сам разрабоитаешь). У меня подобная дребедень (за исключением вышеупомянутого транслятора - нам не надо юзать виндовые сообщения) работает уже давно и оповещает тетенек о поступивших заказах с Интренет-магазина ( http://www.pregrad.net/). Благодаря сей возможности MSSQL можно практически неограниченно расширять его функциональность. У нас туда много всего напихано. Если что пиши - вышлю исходники.


Юрий Жуков   (2002-01-21 09:14:00) [5]

Я думаю прийдется изменить автору совй вопрос на "Как послать сообщение из SQL server клиентам?"

IB см IBEvents
ORACLE - см Alert and Pipe
MSSQL - тут недавно пробегал ответ с использованием DLL
...


KSergey   (2002-01-21 08:40:00) [6]

>ведь есть возможность в хранимых процедурах использовать внешние модули. в эту сторону и копай.

И толку?
Но во-первых: что за SQL-сервер?
Если иметь в виду MS SQL, то, конечно, внешние модули там есть, но они-то ведь на сервере работают! Получается, чтобы что-либо из них послать клиенту, нужно таки какой-то сетевой обмен городить. Т.е. никакими WM_ тут не отделаешься. Хотя, конечно, в принципе как вариант - это пройдет.
Рискну предложить другой вариант: запустить поток (ну или еще как-нибудь), в котором периодически дергать какой-нибудь флаг на сервере (таблицу или еще что-то), в котором, как серверу понадобиться известить клиентов, взведется какое-либо свойство.


GorA   (2002-01-21 03:14:00) [7]

зачем так категорично?

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

удачи.


Иван Шихалев   (2002-01-19 21:46:00) [8]

Никак


Наверх

Титульная страница Поиск, карта сайта Написать письмо