Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.18;
Скачать: CL | DM;

Вниз

Народ как узнать на клиенте MS-SQL что в записи в базе изменились   Найти похожие ветки 

 
undersun ©   (2002-02-19 19:55) [0]

Народ как узнать на клиенте MS-SQL что в записи в базе изменились


 
MetallAdm ©   (2002-02-19 20:07) [1]

Что записи в базе изменились я так понял ??
ну помоему обычно у базы лог какойто ведется


 
kserg@ukr.net   (2002-02-20 11:54) [2]

Из форума по вопросу
"Как пользователь может узнать о изменениях данных,
сделанных другим пользователем?" [D6, MSSQL ]

Savage c (21.12.01 02:44)
В сети висит несколько приложений на БД SQL Server 2000, одно из приложений, например, добавляет поле в таблицу, а другое должно получить сообщение о сделанном добавлении. Как это реализовать?

Delirium c (21.12.01 12:39)
Уже отвечал, но повтарюсь: существуют три пути:
1) рассылать сообщения через свою dll(у меня на сайте), из тригеров
2) создать таблицу сообщений, заполнять её из тригеров и регулярно перечитывать
3) использовать SQL-Mail

Desdechado c (21.12.01 15:35)
что такое SQL-Mail и в каких системах он работает?
что такое посылка сообщений из триггеров?

Delirium c (21.12.01 15:48)
Речь идёт о MSSQL SQL-Mail: читай Help по xp_sendmail;
посылка сообщений из триггеров:
из триггера (или откуда хочешь) запускаешь внешнюю процедуру (Extended Procedure), которая загружает твою dll и вызывает уже твою процедуру из dll. А в dll делай что хочешь - я, например, просто рассылаю строчки с указанием таблицы и ключа.

Xpdeveloper (22.12.01 06:59)
В ADO есть очень изящный способ, там можно коннектиться к событиям - на добавление, удаление и движение по табличке,
но для этого тоже надо сажать на каждую открытую табличку класс-ревизор, который это все и будет рассылать.

Delirium c (22.12.01 12:39)
> Xpdeveloper
Правильно-ли я понял: каждый клиент рассылает всем остальным сообщения о своих действиях?

Savage c (23.12.01 02:52)
>Delirium
Если сообщения рассылает клиент, то этот способ не годится, так как зависит от протоколов, имеющихся на каждом компьютере клиента, а вот если бы сообщения рассылал сам сервер, то нам протоколы не важны...
Да и это более надежно, хотя тут можно поспорить

Васев Дмитрий (23.12.01 11:45)
Подожди пару лет может MS и сможет встроить данную возможность в SQL, но врядли, своих мозгов у них не хватит, опять возьмут чужое. Расылка сообщений об изменениях в базе реализована в Oracle 9 и IB. Причем Oracle использует технологию Borland.

ink c (24.12.01 10:18)
В IB существует такое понятие как EVENT. Это сообщение посланное сервером БД всем клиентам, которые "сказали" свою заинтерисованность в сообщении. Легко реализуется с помощью такой хранимой процетуры
create procedure send_message ( name_event varchar(40) )
as begin
post_event name_event;
end
###
Но есть маленькая тонкость, не стоит посылать сообщение пока не закончил транзакцию, а то изменение не увидишь :-).

Delirium c (24.12.01 11:10)
>Savage
"Если сообщения рассылает клиент, то этот способ не годится, так как зависит от протоколов, имеющихся на каждом компьютере клиента, а вот если бы сообщения рассылал сам сервер, то нам протоколы не важны..."

Совершенно согласен, именно это я и имел ввиду обращаясь к Xpdeveloper. Сообщения должны идти именно от сервера и именно из триггеров, как гарантия того, что изменения уже призошли.

Delirium c (24.12.01 11:19)
Моя dll-ка работает примерно так-же в MSSQL
exec SendShortMessage "192.168.1.255:1234","Привет!"
а в Delphi ставишь IdUDPServer и слушаешь сообщения

Savage c (24.12.01 13:48)
>Delirium
Опиши по подробнее как с ней работать, и еще вопрос беспрецедентной наглости: исходники можно глянуть?

Delirium c (24.12.01 14:01)
Исходники - простые до смеха, поэтому и не показываю :)
А пользываться просто:
Регистрируешь Extended Stored Procedure - база данных master.
SendShortMessage - имя процедуры, Messager.dll - собственно, нужная dll-ка у меня на сайте выложена.
Вот и всё, теперь в любом месте в SQL можно написать:

declare @Host VarChar(128) Set @Host="192.168.1.22:1234" -- или Set @Host="My_Komp:1234"
declare @Msg VarChar(128) Set @Msg="Test message"
exec master.dbo.SendShortMessage @Host,@Msg

Мессага полетела в 1234-й порт на IP= 192.168.1.22
Для рассылки использую IdUDPClient, следоватьельно ловить лучше всего IdUDPServer-ом. Можно рассылать и BROAD CAST - @Host="192.168.1.255:1234" теперь сообщение получат все, у кого IP-шник начинается с 192.168.1
Вот собственно и всё :)

Сомневающийся (24.12.01 16:03)
Заодно и еще чего-нибудь куда-нибудь пошлет..

Delirium c (24.12.01 16:12)
>Сомневающийся
У меня работает уже 2 месяца: безглючно, среднее время прохождения сообщения от сервера до клиентов - 50мс.



Страницы: 1 вся ветка

Текущий архив: 2002.03.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
6-57483
Surf
2002-01-04 09:12
2002.03.18
Помогите! Не могу найти. Вопрос по NMHTTP.


1-57383
mavandrew
2002-03-01 16:52
2002.03.18
Копирование файлов.


3-57333
Андре
2002-02-20 08:58
2002.03.18
Поиск по базе


1-57446
softland
2002-03-02 12:38
2002.03.18
Работа с TShellListView


1-57429
Help!
2002-03-03 01:34
2002.03.18
Проблемы запуска!!!!!!