Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли использовать Jobs для решения моей задачи 
:(
    Опции темы
CityAC
Дата 1.10.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 3.11.2006
Где: Украина Горловка

Репутация: нет
Всего: 1



Задача следующая. В базе есть таблица будильников,в которой хранятся данные о времени, в которое определенный будильник должен сработать. Может SQL Server периодически просматривать эту таблицу, и если время "Х" настало, отсылать сообщение программе в которой открыто соединение с базой. 
Просто пришел новый чел и сказал, то что вы затеяли -  клиент сервер можно сделать с помощью баз данных на прямую. Да тока он работоает с Ораклом и шеф теперь предлагает перейти на эту БД. А мне не охота . Если к завтрашнему не покажу как это сделать на Server-e заставит  переходить. Все еще в начальном этапе разработки.
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
kobra
Дата 2.10.2007, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



сделать в принципе можно (правда с исползованием внешних API), но для чего сервер беспокоить для такои мелочи? 
думаю стоит даказать что оптимальнее будет будилник делать на клиенте.
например один раз за час клиент загружает с сервера времена срабатывания будилников в ближаищи час, потом опять. 
PM MAIL   Вверх
VOS
Дата 2.10.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
CityAC
Дата 2.10.2007, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 3.11.2006
Где: Украина Горловка

Репутация: нет
Всего: 1



Цитата(kobra @  2.10.2007,  09:14 Найти цитируемый пост)
например один раз за час клиент загружает с сервера времена срабатывания будилников в ближаищи час, потом опять. 

Хорошая мысль надо будет завтра обсудить. 
А как к примеру подключившемуся  коиенту отправить табличку?

Там еще одна задача есть, с которой, на мой взгляд, более оптимально может справиться сервер.
Входящие звонки регистрируются в базе и инфа по звонку должна сразу отправляться клиенту. Т.е. база поступивших звонков обновилась - нужно отправить сообщение клиенту(диспетчеру), что нужно считать последнюю строку. Вот такое как сделать?

Это сообщение отредактировал(а) CityAC - 2.10.2007, 19:12
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
kobra
Дата 3.10.2007, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



Цитата(CityAC @  2.10.2007,  17:49 Найти цитируемый пост)
А как к примеру подключившемуся  коиенту отправить табличку?
не понял.

Цитата(CityAC @  2.10.2007,  17:49 Найти цитируемый пост)
Входящие звонки регистрируются в базе и инфа по звонку должна сразу отправляться клиенту.
тут может быть много решении. веть в базу инфа идет отт какоито програмы, можно етоиже програмои инфу переправить и оператору. можно тригер поставить, который будет изыват дллку которая свяжетса по сети с програмой клиента и передаст инфу или идентификатор записи. 
Цитата(VOS @  2.10.2007,  11:50 Найти цитируемый пост)
Лучше, конечно  через какой-нибудь COM-объект типа XMLHTTP (естественно указав в качестве прокси и порта Вашу программу, а она должна слушать этот порт и получив данные че-то там делать).


можно конечно как скозал VOS меил послать, если скоость не важна.

PM MAIL   Вверх
VOS
Дата 3.10.2007, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: 2
Всего: 8



Вообще навскидку минус загрузки раз в час будильников на клиента в том, что если кто-то изменил расписание, то новое не сработает и придется придумывать механизм оповещения, рефреша и т.д. 

Цитата

А как к примеру подключившемуся  коиенту отправить табличку?
Там еще одна задача есть, с которой, на мой взгляд, более оптимально может справиться сервер.
Входящие звонки регистрируются в базе и инфа по звонку должна сразу отправляться клиенту. Т.е. база поступивших звонков обновилась - нужно отправить сообщение клиенту(диспетчеру), что нужно считать последнюю строку. Вот такое как сделать?



Не понял чем не устраивает вариант, который я нарисовал выше.
Если использовать XMLHTTP внутри хранимки, то с его помощью можно отправить HTTP запрос на любой порт, внутри которого передавать требуемые данные, как вариант SQL запрос или только параметры (лучше), выполнив который клиент получит требуемую табличку.

Вторая хранимка по job сканирует новые звонки, если появился новый звонок (в базе новая строка), то отправить или опять же HTTP запрос или UDP и т.д. Теоретически можно эту хронь и из триггера  вызывать, но думаю это не круто, т.к. сетевое соединение может быть долгим, соответственно все будет клинить. Ну и плюс если ввели сразу 50 записей за пару секунд (например с разных клиентских мест), то в случае job будет отправлено только 1 сообщение, а из тригера 50, что приведет к 50 refresh датасета, что не круто. 

PM MAIL   Вверх
kobra
Дата 3.10.2007, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



согласен во всем, кроме
Цитата(VOS @  3.10.2007,  09:59 Найти цитируемый пост)
Ну и плюс если ввели сразу 50 записей за пару секунд (например с разных клиентских мест), то в случае job будет отправлено только 1 сообщение, а из тригера 50, что приведет к 50 refresh датасета, что не круто. 
этот момент зависит от задачи. так что нужно исходить из реальных потребностей.

PM MAIL   Вверх
VOS
Дата 3.10.2007, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: 2
Всего: 8



kobra,  в общем случае соглашусь с Вами, хотя в данном варианте наличие диспетчера (человека) на клиентском месте позволяет сделать подобное допущение. Но, возможно, под диспетчером понималась программа.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.