powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
13 сообщений из 13, страница 1 из 1
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32000982
Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть приложение - пишу на Делфи, использую компоненты ADO
для обращение к базе данных MS SQL Server 7.0

Проблема такая: нужно обновить информацию на экране в приложение,
если на сервере произошло какое либо изменение в базе данных
(допусти кто-то вставил или удалил запись из другого приложения)

Что нужно сделать на сервере или в приложении чтобы в приложении увидеть
изменение данных ?
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32000996
maximF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, готовых встроенных средств для решения такой задачи нет.
Надо как то самому изощряться. Например, в триггере на всевозможные модификации таблицы, изменения в которой необходимо отслеживать, записывать информацию о корректировке данных в специальную таблицу. При этом можно указывать дату изменения и другую полезную информацию.
А в клиентском приложении создать дополнительный поток, время от времени обращающийся к той специальной таблице и проверяющий, не изменились ли данные.
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32000998
Oleg F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно более сложный вариант, чем предложенный выше и позволяющий организовать взаимодействие в режиме реального времини. Внешняя хранимая процедуры на SQL Server-е (написанная на C) обращается к DCOM объекту, а тот посылает сообщение другому DCOM объекту, который находится на клиентском ПК. И от него сообщение поступает в клинтскую программу, написанную на Delphi (т.к. в COM объектах есть механизм событий). Но, честно скажу, хотя теоретически уверен, что это возможно, сам практически подобные вещи делать не пытался. Не было такой насущной необходимости.
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32001002
VadimB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение, которое предложил maximF очень простое и надежное.
Если много клиентов и каждый клиент время от времени будет обращающийся к специальной таблице и проверять,
не изменились ли данные, то эти проверки могут сильно загрузить SQL сервер.
Решение, которое предложил Oleg F более сложное и не будет сильно загружать SQL сервер.
Можно упростить решение Oleg F, если в место DCOM объектов использовать сервис MSMQ
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32001014
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я сильно извеняюсь. А что такое MSMQ ?
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32001022
VadimB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.microsoft.com/msmq
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32001028
RUSLAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще - то ADOConnection.OnInfoMessage - По сообщению с сервера должна сработать.
Но у меня пока не ююю
Может у тебя получится, по Raiserror
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32001045
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
InfoMessage случается только в ПРОЦЕССЕ УСТАНОВКИ соединения.
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32001051
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raiserror не спасает, так как message получает только текущее соединение. В задаче же, насколько я понимаю, требуется чтобы данные обновлялись на экранах всех клиентов. Отсутствие поддержки событий уровня сервера раздражает, но я надеюсь, что в след.версии это исправится. Ну да об этом еще рано. Пока с точки зрения масштабируемости (но не гемора) наиболее оптимален вариант, предложенный Вадимом. Я его в свое время проверял. На уровне middleware создается COM-компонента, единственный метод которой пишет в очередь MSMQ переданные ему параметры. Триггер на insert/update/delete создает (sp_OACreate) инстанс этой компоненты и вызывает ее метод. Клиент реализует интерфейсы MSMQ и привязывается к очереди. По приходу в очередь нового сообщения на клиенте вспыхивает событие, в обработчик которого можно положить, напр., refresh grid'a.
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32001054
Oleg F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я поискал про MSMQ информацию, вроде как в Windows2000 он интегрирован. Но Windows2000 мне пока не нужен, у меня Windows NT Server 4.0 SP5 и клиенты под Windows95.
И вот тут какие-то разночтения. В одних местах пишут, что MSMQ интегрирован в Windows NT Server 4.0 (или "будет включён в ближайшие версии Windows NT 4.0), в других местах описывают отдельный продукт Microsoft Message Queue Server 1.0, у которого есть клиентское и серверное программное обеспечение, графические утилиты администрирования и документация (Administrator's Guide и Programmer's Reference). В описании SP5 для Windows NT 4.0 упоминается, что в него входит патч для MSMQ (значит, MSMQ изначально есть в Windows NT 4.0 ?).
То, что я прочитал про функциональные возможности MSMQ мне понравилось, штука полезная. Но как его начать использовать, какие программы нужно устанавливать на Windows NT и Windows95? Или в Windows NT какой-то MSMQ-сервис есть, который можно запустить? И где утилиты удалённого администрирования этим MSMQ?
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32001059
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю как в других серверах, но в IB начиная с 5.6 этот механизм реализован. Причем Инпрайзовцы кричат, что он патентован. Так что сомнительно ждать появление такой возможности в MSSQL. Хотя и то, что сделано в IB меня не до конца устраивает. Да, если на клиенте указать необходимость регистрации серверного события (которое там должно быть соответствующим образом сгенерировано в коде триггера/процедуры), событие на клиенте произойдет, но никакого параметра клиент не получит. Просто голое событие. Как-то это не совсем правильно.
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32001061
Дед+Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To: Oleg F - где взять MSMQ.
С Windows 2000 все точно. Он туда входит по определению.
Если у тебя NT Enterprise Edition, то он лежит на втором диске в составе Option Pack.
Если NT - обычная, то Microsoft предлагает 2 пути. Либо приобрести Option Pack у ближайшего реселлера за $99.95, либо на халяву качать его с сайта ( http://www.microsoft.com/ntserver/nts/downloads/recommended/NT4OptPk/default.asp). Сколько места он занимает, я, честно говоря, не помню.
После того, как поставишь, накати свой SP5 заново (а еще лучше - SP6a).

To: Павел
Я думаю, что сомнения необоснованы. Если только Borland не намерен запатентовать SQL, XML, C++ и т.д.
...
Рейтинг: 0 / 0
Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
    #32001086
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какова цель?
Варианты:
1.Гарантированно доставить сообщение пользователю о событии на сервере.
2.Использовать средства, имеющиеся в наличии у сервера.

При первом варианте - возможно и использование MSMQ и собственные приложения на основе, хотя бы WINSOSKET ...
Плюсы - гарантированная доставка. Недостатки - неявная связка HOSTNAME и SPID, работа с удалённым сервером при ограничении доступа к последнему.
Второй работает через srv_sendmessage и поллинг в отдельном thread'e. Устанавливается обработчик сообщений dbhandlemessage поверх стандартного. Плюс - не задействуются дополнительные ресурсы, DBPROCESS прозрачен. Недостатки - тяжело организовать broadcasting, работа с удалённым сервером т.к. после выполнения RPC соединение между серверами закрывается.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Delphi 5 - как получать в приложениях сообщения о изменении данных на сервере
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]