Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Вниз

Народ как узнать на клиенте 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
1-57371
Lexann
2002-03-04 21:43
2002.03.18
Panel


4-57571
MrAngel
2002-01-21 12:11
2002.03.18
И ещё один вопрос!!! Само описание HWND и HDC. Их внутренняя структура.


1-57368
Геральт
2002-03-04 20:55
2002.03.18
Существует ли папка?


6-57469
Ghost.
2001-12-29 09:09
2002.03.18
Сервер SOCKS4/5


7-57546
DNT
2001-12-16 20:09
2002.03.18
Биос + температура процессора + обороты вентилятора





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский