powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как отследить изменение в таблице MS SQL?
51 сообщений из 51, показаны все 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
Как отследить изменение в таблице MS SQL?
    #35418845
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понял. Последовательность следующая:
При запуске клиента, он подключается к dll. Далее при обновлении данных в таблице срабатывает триггер, происходит подключение к dll, в dll генерируется событие, на которое реагирует клиент и запускает Recordset.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418876
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что такое BOL не знаю
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418893
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда советую вам узнать, это B ooks O n L ine — справочная система MSSQL.
Берите и читайте. Для 2005 версии есть даже на русском языке.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35418906
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Читал. В частности сегодня все что нашел по ADO - пересмотрел. Но так и не понял как с помощью Recordset добавить только недавно поступленные данные либо выявить, грубо говоря, из 100 полей только то одно которое обновилось.
Ну а по поводу отслеживания изменения в базе данных на этом форуме опытные программисты очень много вели дискуссии. я же не претендую на звание программиста, можно просто направить на раздел или статью где это описано.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35419455
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В BOL нужно почитать про sp_OACreate и sp_OAMethod.

Та последовательность, что вы описали, будет работать только если клиент и сервер находятся на одном компьютере.

Я говорил о другом. Клиент не подключается к dll. dll ставится на сервер. При срабатывании триггера dll не генерит событие, а отправляет пакет по сети, на определенный ip или имя компьютера или на несколько компьютеров. На заранее определенный порт. Клиент постоянно слушает этот порт, когда на него приходят данные, реагирует. Отправка и прием данных по сети делается с помощью Microsoft Winsock Control.

В четвертый раз я это повторять уже не буду.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35419556
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. В моем случае клиент и сервер на одном компьютере.
Возможно в будующем появится необходимость в удаленном уведомлении.
Единственное хотелось бы знать насколько высокая будет производительность в обоих случаях. Если данные обновляются несколько раз в секунду насколько быстро будут поступать обновленные данные в клиент на одном компьютере и через сеть? И вообще возможны ли потери некоторых данных?
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35419914
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если данные обновляются раз в секунду, то система будет в основном занята перегоном данных между клиентом и сервером, работать на ней будет нереально.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35419915
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* несколько раз в секунду
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35421726
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могли бы привести пример какого-нибудь события в dll, на которое будет реагировать клиент?

Т.е. клиент постоянно должен быть в ожидании этого события?
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35421727
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И насколько я понимаю это событие можно напрямую вызвать из MS SQL? Или оно должно наступать при обращении к dll?
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35421793
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proftsНе могли бы привести пример какого-нибудь события в dll, на которое будет реагировать клиент?О господи! Не бывает событий в dll.

Событие случается в твоей базе данных - добавилась строка например. На таблице висит триггер. Этот триггер отследив что произошло добавление строки обращается к функции которая находится во внешней dll. В качестве параметра для этой функции передает список всех подключенных к базе в данную секунду клиентов и их IP адреса.
Функция проходит по всему списку клиентов, устанавливает с каждым клиентом TCP туннель и посылает по нему сообщение "такая-то таблица обновилась". (Если не хочешь с TCP туннелем возится, можешь ограничиться UDP пакетами, но они имеют право теряться. Подробнее читай учебник по сетям)

proftsТ.е. клиент постоянно должен быть в ожидании этого события?Да. Каждый клиент базы данных все это время сидит и ждет пока та самая функция из dll не попытается с ним связаться. А когда она связалась и сообщила что какая-то таблица обновилась, клиент должен будет посмотреть: а показывает ли он в данное время эту таблицу вообще или пользователь держит открытым другое окно. А потом из того-то же информационного пакета в котором приехало имя таблицы, клиент вытащит первичные ключи обновленных записей, и перезапросит эти записи с сервера. Потом добавит/удалит/изменит эти записи на визуальном отображении таблицы. После чего клиент заснет в ожидании следующей посылки по уже установленному каналу связи либо открытия нового канала.
И если ты еще не догадался - этот канал связи по которому сервер сообщает клиенту о появлении новых записей это совсем не тот же самый канал связи по которому клиент тянет данные с сервера. У тебя будет в итоге два канала. Один для данных, другой для событий на сервере.

Теперь понял? Или еще дальше разжевывать?
И сразу говорю - ни один DBGrid самостоятельно это все делать не умеет. И наборы компонентов которые умеют так работать стоят очень и очень большие деньги.

proftsИ насколько я понимаю это событие можно напрямую вызвать из MS SQL? Или оно должно наступать при обращении к dll?Ты никогда сам события не вызываешь. Вообще. На то они и события.
События случаются и они уже вызывают твои функции и процедуры.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35421850
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу события не так выразился. В голове понимаю о чем хочу спросить, а терминологию практически не знаю.

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

Тогда вообще не понимаю где камень преткновения и что в данном случае будет стоить очень и очень большие деньги.

Как же другие это делают. Как пример на этом же форуме есть другая тема с такой же задачей. Там ее решили через блокировку таблицы (например) на сервере, триггер обравает блокировку, а клиент находится в ожидании обрыва.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35421862
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proftsВообще изначально думал, что такая задача как обновление данных в клиенте - абсолютно обычная и простая задача, описание которой должно быть чуть ли не в первой главе каждого учебника.Ну не знаю насчет учебников, но задача в обычной постановке действительно очень простая:
Код: plaintext
1.
2.
3.
4.
1 Клиент читает данные из базы данных
2 Отрисовывает их на экране
3 Ждет Х секунд
4 Идет на шаг номер 1
В такой постановке эта задача решается всеми и очень часто. Иногда шаг 3 заменяют на "Ждет пока пользователь не ткнет кнопку Обновить".
А если задача ставится так, чтобы сервер сообщал клиенту что данные обновились - вот тогда начинаются игры с дополнительными каналами связи. Читай выше.

proftsТогда вообще не понимаю где камень преткновения и что в данном случае будет стоить очень и очень большие деньги.если знаешь что и как - никаких камней :) Но чтобы это реально сделать тебе нужно быть одновременно и специалистом в базах данных (чтобы написать триггер) и специалистом в твоей конкретной СУБД (иначе не сможешь связать триггер с внешней dll) и уметь посылать сообщения по сети (чтобы написать эту самую dll) и уметь принимать эти сообщения... То есть это либо один универсал (а мы дорогие) Либо команда из нескольких человек.

proftsКак же другие это делают. Как пример на этом же форуме есть другая тема с такой же задачей. Там ее решили через блокировку таблицы (например) на сервере, триггер обравает блокировку, а клиент находится в ожидании обрыва.Ну а как именно клиент ждет обрыва этой самой блокировки? Механизм ожидания там какой?
И вообще, о какой блокировке в том топике шла речь? Если о транзакционных блокировках, то они триггером не обрываются в принципе и клиент ждет ответа всегда автоматически. Если самодельные блокировки подвластные триггерам - то опять вопрос: как клиент узнает что блокировка снялась? Тут только два пути - либо перезапрашивать постоянно, либо изобретать свою реализацию server push.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422003
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу блокировки:


Так вот, создаем заблокированный ресурс - ну собственно как угодно, да хоть вот так:

begin transaction one
select * from link with (holdlock)
waitfor delay '00:01:00'
commit

Ну ясный пень, я таблу взял просто для демонстрации, фактически можно работать даже без таблы, а просто по именованной транзакции.
Но это более сложная техника, я ее тут не буду описывать.
После создания заблокированного ресурса - наслаждаемся списком заблокированных ресурсов:

exec sp_lock
и наконец, АСИНХРОННО из клиента выдаем:

Insert link default values
Ну, на самом деле, конечно, в зависимости от установок может потребоваться

Insert link with (holdlock) default values
- я думаю, вы понимаете это и я не заостряю на этом внимание.

Так вот, эта последняя команда благополучно виснет, до того момента, пока первая транзакция не завершится и ресурс не освободится.
Когда ресурс освободится, то - подчеркиваю - и в ADO и в ADO.NET - возникает событие завершения этой асинхронной команды.
Которое, собственно говоря и есть наше оповещение клиента о событиях сервера.
Техника освобождения ресурсов стандартная - их множество разных - это не суть вопроса.

Логика подписки реализуется в данных таблы link, которая собственно и возвращается клиенту после возникновения события.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422291
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При работе с триггерами эта схема применима только с использованием именованной транзакции.

А вот интересно стало, какую задачу вы хотите решить с этими уведомлениями? Может эта возня имеет смысла не больше, чем попытка прикрутить к велосипеду ласты?
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422371
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я на это уже намекал автору. похоже, что он с того конца копает :)
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422438
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача следующая. В MS SQL поставляются котировки ценных бумаг в реальном времени и накапливается история по ним. Допустим таблица с 10-ю записями (каждая запись для отдельной акции) и 10 полями в каждой записи (параметры по каждой отдельной бумаге).
Клиент производит анализ данных как за длительный период (день - неделя), так и за короткий (от часа вплоть до последней поступившей котировки) и на основе анализа принимает решение об осуществлении покупки/продажи(через API) определенной акции.

Собственно весь этот процесс был организован на Access. Access принимал данные по ODBC, по таймеру с интервалом примерно 150 мс происходил анализ данных (т.е. независимо от того произошли изменения или нет). И из него же поступали транзакции. Вообщем нагрузка была достаточно большая и хотелось как-то уйти от этих таймеров плюс появилась необходимость в написании отдельного клиента, через которого происходило бы управление всем процессом.

Может вы и правы. Для начала реализую задачу с помощью обычных запросов клиента через опред. интервал. Далее будет видно.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422450
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. каждые 150 мс заново происходил анализ всех ста параметров (а точнее истории данных параметров) данной таблицы, хотя за это время могло измениться всего один или два. А если в дальнейшем их будет больше? (а это обязательно будет)
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422457
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Konst_One
> я на это уже намекал автору. похоже, что он с того конца копает :)

Да не мешайте человеку работать. :))


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422470
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: profts
> Т.е. каждые 150 мс заново происходил анализ всех ста параметров (а
> точнее истории данных параметров) данной таблицы, хотя за это время могло
> измениться всего один или два. А если в дальнейшем их будет больше? (а это
> обязательно будет)

Ну так заведи в базе таблицу в которую будут складыватся результаты анализа.
А сам анализ проводи в тригерах и результат анализа заноси в эту таблицу. А
читай уже готовые данные. Тогда у тебя будут данные анализа всегда актуальны
сразу после вставки данных, и программе нужно будет только перечитать их, а
не пересчитывать каждые 150 мс

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422471
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Да не мешайте человеку работать. :))

Да уж. С учетом того, что человек два месяца об Accesse слышал только то, что он входит в пакет MS Office, а по поводу программирования - видел в книжном кучу книг с непонятными названиями. :)

Поэтому даже то что проделал - считаю для себя пусть небольшим, но достижением.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422486
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКлиент производит анализ данныхЭто операция программная или этим занимается человек? Если программная, то я бы попробовал перенести анализ в триггер, а клиенту отдавать только уведомления о покупке/продаже. Скорее всего, таких случаев меньше, чем "бездействие", т.е. не покупаем и не продаем.
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422503
profts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Это операция программная или этим занимается человек? Если программная, то я бы попробовал перенести анализ в триггер, а клиенту отдавать только уведомления о покупке/продаже. Скорее всего, таких случаев меньше, чем "бездействие", т.е. не покупаем и не продаем.

Да, конечно программная. Собственно осуществить переход с Accessa и решил только из-за отсутсвия в нем триггеров. А триггер умеет реагировать на изменение отдельного поля или все-таки вешается целиком на таблицу?
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422525
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: profts
> А триггер умеет реагировать на изменение отдельного поля или все-таки
> вешается целиком на таблицу?

вешается на таблицу целиком, но в нем есть COLUMNS_UPDATED с помощью
которого можно проверять какие столбцы изменялись

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422530
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql-сервер , блокирует запись которая обновляется (не поле!)
...
Рейтинг: 0 / 0
Как отследить изменение в таблице MS SQL?
    #35422535
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это я по вопросу транзакций, забыл приписать
...
Рейтинг: 0 / 0
51 сообщений из 51, показаны все 3 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как отследить изменение в таблице MS SQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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