![]() |
|
Модераторы: Akina |
![]()
|
|
| CityAC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 3.11.2006 Где: Украина Горловка Репутация: нет Всего: 1 |
Задача следующая. В базе есть таблица будильников,в которой хранятся данные о времени, в которое определенный будильник должен сработать. Может SQL Server периодически просматривать эту таблицу, и если время "Х" настало, отсылать сообщение программе в которой открыто соединение с базой.
Просто пришел новый чел и сказал, то что вы затеяли - клиент сервер можно сделать с помощью баз данных на прямую. Да тока он работоает с Ораклом и шеф теперь предлагает перейти на эту БД. А мне не охота . Если к завтрашнему не покажу как это сделать на Server-e заставит переходить. Все еще в начальном этапе разработки. --------------------
Вижу цель, не вижу припятствий. |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 5 Всего: 9 |
сделать в принципе можно (правда с исползованием внешних API), но для чего сервер беспокоить для такои мелочи?
думаю стоит даказать что оптимальнее будет будилник делать на клиенте. например один раз за час клиент загружает с сервера времена срабатывания будилников в ближаищи час, потом опять. |
|||
|
||||
| VOS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 31.1.2007 Репутация: 2 Всего: 8 |
Если 2000 Server
Можно сделать хранимку и посадить ее на Job. Внутри определить кто подключен, например так: select distinct hostname from master.dbo.sysprocesses where hostname is not null and hostname!='' Ну а потом отправить сообщение (пример с Net Send) SET @Mess = 'net send ' + @Comput + ' "'+@Msgtext+'"' EXEC master.dbo.xp_cmdshell @Mess Лучше, конечно через какой-нибудь COM-объект типа XMLHTTP (естественно указав в качестве прокси и порта Вашу программу, а она должна слушать этот порт и получив данные че-то там делать). В 2005 там очереди есть, может через них. Но вообще согласен с kobra, хотя может не совсем задачу понял. Это сообщение отредактировал(а) VOS - 2.10.2007, 11:51 |
|||
|
||||
| CityAC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 3.11.2006 Где: Украина Горловка Репутация: нет Всего: 1 |
Хорошая мысль надо будет завтра обсудить. А как к примеру подключившемуся коиенту отправить табличку? Там еще одна задача есть, с которой, на мой взгляд, более оптимально может справиться сервер. Входящие звонки регистрируются в базе и инфа по звонку должна сразу отправляться клиенту. Т.е. база поступивших звонков обновилась - нужно отправить сообщение клиенту(диспетчеру), что нужно считать последнюю строку. Вот такое как сделать? Это сообщение отредактировал(а) CityAC - 2.10.2007, 19:12 --------------------
Вижу цель, не вижу припятствий. |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 5 Всего: 9 |
не понял.
можно конечно как скозал VOS меил послать, если скоость не важна. |
|||
|
||||
| VOS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 31.1.2007 Репутация: 2 Всего: 8 |
Вообще навскидку минус загрузки раз в час будильников на клиента в том, что если кто-то изменил расписание, то новое не сработает и придется придумывать механизм оповещения, рефреша и т.д.
Не понял чем не устраивает вариант, который я нарисовал выше. Если использовать XMLHTTP внутри хранимки, то с его помощью можно отправить HTTP запрос на любой порт, внутри которого передавать требуемые данные, как вариант SQL запрос или только параметры (лучше), выполнив который клиент получит требуемую табличку. Вторая хранимка по job сканирует новые звонки, если появился новый звонок (в базе новая строка), то отправить или опять же HTTP запрос или UDP и т.д. Теоретически можно эту хронь и из триггера вызывать, но думаю это не круто, т.к. сетевое соединение может быть долгим, соответственно все будет клинить. Ну и плюс если ввели сразу 50 записей за пару секунд (например с разных клиентских мест), то в случае job будет отправлено только 1 сообщение, а из тригера 50, что приведет к 50 refresh датасета, что не круто. |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 5 Всего: 9 |
согласен во всем, кроме
этот момент зависит от задачи. так что нужно исходить из реальных потребностей. |
|||
|
||||
| VOS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 31.1.2007 Репутация: 2 Всего: 8 |
kobra, в общем случае соглашусь с Вами, хотя в данном варианте наличие диспетчера (человека) на клиентском месте позволяет сделать подобное допущение. Но, возможно, под диспетчером понималась программа.
|
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |