powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как отследить изменение в таблице MS SQL?
25 сообщений из 51, страница 1 из 3
Как отследить изменение в таблице MS SQL?
    #35402728
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как в реальном времени отслеживать появление новой строки в таблице в MS SQL Server и отправлять новое значение в прогу, написанную на VB?
Просто не совсем понятно следуюшее. Если пользуюсь триггером, то иннициировать коннект с прогой на VB можно с помощью какой-то процедуры прописанной в самом триггере? (если да, то где про это можно прочитать. книг много, можно просто ткнуть в название раздела.) Насколько я понимаю триггер должен реагировать на появление новой записи и через ADO отправлять ее в прогу. Или все-таки коннект идет со стороны проги, которая делает запрос в базу данных?
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35402740
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.tek-tips.com/viewthread.cfm?qid=1258158
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35402748
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В двух словах: одно приложение (ваша база с триггерами) посылает переменную в другое приложение (ваш VB клиент). В VB клиенте пишется соответствующий event.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35402772
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да примерно так я и понимаю. Просто не могу найти информацию о том как в триггере прописать процедуру на отсылку переменной. Т.е с помощью какого оператора или функции происходит соединение с клиентом? Хотя бы как называется раздел на эту тему.
Единственное нашел как из клиента с помощью ADO Recordset вытащить переменную из БД.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35403062
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) сейчас точно не могу сказать, но где-то в мсдн видел статью, в которой описывалось отслеживание изменений в базе

в ее основе лежало открытие рекордсета в режиме adLockBatchOptimistic
вот тут немного можно почитать

2) а если просто по таймеру делать MyRecordset.Resync ?


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35405512
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно создать таблицу журнала новых строк , в триггере при ввод новой строки, ввести процедуру ввода информации в эту таблицу журнала, а через ADO по таймеру отслеживть таблицу журнала и после получения информации очищать таблицу
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35405965
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо что-то в консерватории подправить!!!
сервер этим заниматься не должен и не обязан. займитесь правильным проектированием своей системы для начала, а то вы решаете проблемы не с того конца.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35406404
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно так:
Код: plaintext
1.
2.
declare @objMyClass int, @hr int
EXEC @hr = sp_OACreate 'MyLib.MyClass', @objMyClass OUTPUT
EXEC @hr = sp_OAMethod @objMyClass, 'FireNotification', @results OUTPUT, @param1, @param2, …
То есть нужно создать dll, которая будет генерировать событие, на которое должен подписаться клиент. Если клиент на том же компе, где и сервер, то проблем никаких. Если на другом, то есть два пути — негламурный и геморойный. В первом случае вместо события нужно рассылать винсоком пакеты, которые будут анализироваться клиентами. Во втором поднимать com+ и настраивать его события. Рекомендую первый.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35407277
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМожно так:
Код: plaintext
1.
2.
declare @objMyClass int, @hr int
EXEC @hr = sp_OACreate 'MyLib.MyClass', @objMyClass OUTPUT
EXEC @hr = sp_OAMethod @objMyClass, 'FireNotification', @results OUTPUT, @param1, @param2, …
То есть нужно создать dll, которая будет генерировать событие, на которое должен подписаться клиент. Если клиент на том же компе, где и сервер, то проблем никаких. Если на другом, то есть два пути — негламурный и геморойный. В первом случае вместо события нужно рассылать винсоком пакеты, которые будут анализироваться клиентами. Во втором поднимать com+ и настраивать его события. Рекомендую первый.Есть еще третий путь. Но он доступен только избранным - использовать встроенную в сервер БД команду message to client (или что-нибудь подобное) а в клиенте ждать ее и по получению перезапрашивать обновленную часть данных. Но server push есть в ооочень редких базах данных. В MS SQL - этого нет.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35410199
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или ставить и настраивать нотификейшен сервер от 2005
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35417557
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот как раз сейчас пытаюсь разобраться с notification serviсes. и чем больше про них читаю, тем более убеждаюсь что это не совсем то.

а вот по поводу dll не совсем понял. что в принципе должна делать dll и какое событие генерировать?
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35417676
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DLL должна в принципе каким-нибудь способом сообщать клиентам, что произошло изменение.
Какое событие? Любое.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418032
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я просто новичок в этом деле, поэтому не совсем понимаю. Неужели нельзя повесить триггер на таблицу (что я уже сделал), который реагирует на изменение и при срабатывании его с помощью Recordseta посылать клиенту обновление данных? или сервер не может быть инициатором соединения? (т.е. для начала нужно сообщить клиенту об изменении и из клиента делать запрос данных)

И еще по поводу Recordseta. Как сделать запрос именно на добавление новых данных, а не на полное обновление, например, всей таблицы целиком? Все копаюсь в ADO и никак не могу найти то что нужно.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418121
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proftsили сервер не может быть инициатором соединения? (т.е. для начала нужно сообщить клиенту об изменении и из клиента делать запрос данных)

Да.
В общем случае : вы посылаете запрос, сервер отвечает на запрос.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418142
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL Server не может быть инициатором соединения, а рекордсет нельзя просто взять и "послать". "Просто" рескордсет можно только получить. Все остальное — сложно. И не нужно.

Инициатором соединения может быть библиотека, которую можно дернуть из триггера. Для этого клиент должен прослушивать какой-нибудь порт. При получении данных на этот порт, клиент может проанализировать то, что пришло, и действовать в зависимости от результатов анализа, например получить заново какой-то набор данных. В этом сучае клиент является сервером для библиотеки.

Запрос на добавление и рекордсет не имеют ничего общего. Запрос на добавление это cn.Execute "insert into tbl1 (col1, col2 …".
Добавление через рекордсет это rs.AddNew: rs("col1").Value = 1: rs.Update/UpdateBatch (в зависимости от курсора и блокировки).
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418149
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Только теперь начинает все расставляться по полочкам.
А как быть с рекордсетом и с запросом на обновление данных? Где хотя бы можно прочитать про это?

Т.е. произошло обновление данных, уведомили клиента, как теперь из клиента сделать запрос на получение новых данных. (допустим добавилась запись в таблице или изменилось одно из полей)
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418169
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА как быть с рекордсетом и с запросом на обновление данных? Где хотя бы можно прочитать про это?Что конкретно не понятно? На примере.
авторкак теперь из клиента сделать запрос на получение новых данныхТочно так же как и старых.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418180
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу запроса просто неверно выразился.

Допустим есть таблица со 100000 строк. добавляется еще одна строка. как произвести обновление на клиенте добавив именно эту строку, а не добавляя снова всю таблицу целиком. хотя бы пример
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418230
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для этого нужно в пакете, который отправит библиотека оповещения (будем называть ее так), прописать идентификатор добавленной записи.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418251
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое очевидное решение — отправлять клиенту примерно такую запись:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Enum ActionType
    atInsert =  1 
    atUpdate =  2 
    atDelete =  3 
End Enum

Type Notification
    Table As String *  50  '50 — чтобы длина записи была постоянной
    Action As ActionType
    ID as Long
End Type
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418368
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А собственно зачем вообще нужна dll. почему триггер, реагирующий на изменение/добавление в таблице сам не может генерировать событие?
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418447
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proftsА собственно зачем вообще нужна dll. почему триггер, реагирующий на изменение/добавление в таблице сам не может генерировать событие?Может конечно, может и будет. От триггера ты никуда не денешься. Но это событие должно каким-то образом попасть на клиента верно? А если СУБД сама по определению не может ничего послать клиенту (она только отвечает на запросы!), то как ты собираешься делать эту самую посылку клиенту?
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418516
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
declare @objMyClass int, @hr int
EXEC @hr = sp_OACreate 'MyLib.MyClass', @objMyClass OUTPUT
EXEC @hr = sp_OAMethod @objMyClass, 'FireNotification', @results OUTPUT, @param1, @param2, …

Извините за такой вопрос, но все-таки.
Для чего нужен выше описанный текст?
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418633
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините за глупый ответ, но у вас BOL есть ?

...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418841
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А нормально ответить трудно?

Два месяца назад я не знал что такое Access, SQL, VB и т.д. Появилась некая задача, начал разбираться, читать и т.д. Изначально все было реализовано в Access. Но современем выяснилось, что его возможностей недостаточно для полноценного решения всех задач. Пошел дальше. В итоге разобрался с MS SQL. Ровно настолько насколько мне было нужно. Разобрался с написанием клиента на VB. Единственное что осталось - обновление данных в клиенте.

Я прошу просто подсказать, если сложно, то дать ссылку, где можно прочитать.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как отследить изменение в таблице MS SQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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