Отследить изменение
От: potap  
Дата: 25.04.08 12:23
Оценка:
Здравствуйте,
можно ли в программе, написанной в Visual Studio 6, отследить изменения (получить извещение), сделанные в определенной таблице базы на MS SQL ?
База доступна для необходимых добавлений.
Заранее спасибо.
Re: Отследить изменение
От: MasterZiv СССР  
Дата: 25.04.08 14:30
Оценка:
potap пишет:

> можно ли в программе, написанной в Visual Studio 6, отследить изменения

> (получить извещение), сделанные в определенной таблице базы на MS SQL ?

Если коротко — то нет. Если поподробнее — очень сложно.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Отследить изменение
От: potap  
Дата: 25.04.08 14:35
Оценка:
а тригеры здесь никак не помогут? нет программного интерфейса к ним извне?
мне нужно отследить добавление/удаление строк из таблицы



Здравствуйте, MasterZiv, Вы писали:

MZ>potap пишет:


>> можно ли в программе, написанной в Visual Studio 6, отследить изменения

>> (получить извещение), сделанные в определенной таблице базы на MS SQL ?

MZ>Если коротко — то нет. Если поподробнее — очень сложно.
Re[3]: Отследить изменение
От: Аноним  
Дата: 25.04.08 19:21
Оценка:
Здравствуйте, potap, Вы писали:

P> а тригеры здесь никак не помогут? нет программного интерфейса к ним извне?

P>мне нужно отследить добавление/удаление строк из таблицы

Начните отсюда. Только прочитайте топик внимательно.

http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=330799&pg=1
Re[4]: Отследить изменение
От: potap  
Дата: 25.04.08 20:31
Оценка:
Спасибо, очень интересно, буду читать

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, potap, Вы писали:


P>> а тригеры здесь никак не помогут? нет программного интерфейса к ним извне?

P>>мне нужно отследить добавление/удаление строк из таблицы

А>Начните отсюда. Только прочитайте топик внимательно.


А>http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=330799&pg=1
Re[3]: Отследить изменение
От: MasterZiv СССР  
Дата: 26.04.08 10:34
Оценка:
potap пишет:

> а тригеры здесь никак не помогут? нет программного интерфейса к ним извне?

> мне нужно отследить добавление/удаление строк из таблицы

Если по-простому — не помогут. Но в сложном решении, естественно, они должны
участвовать.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Отследить изменение
От: MasterZiv СССР  
Дата: 26.04.08 10:56
Оценка:
potap пишет:

> Спасибо, очень интересно, буду читать


Главное, почему НЕ НАДО так делать (так — это любым способом оповещать
клиентов об изменениях в БД) -- большое количество клиентов.
Если мы производим в единицу времени M транзакций изменения данных,
и имеем N клиентов, то в эту же единицу времени нам надо будет производить

o = N * M оповещений.

M на самом деле обычно тоже зависит от N, количества пользователей,
поскольку пользователи на сервере появляются не просто так, а чтобы что-то
делать. Допустим,

M = k * N (кол-во операций линейно зависит от кол-ва пользователей).

В таком случае оценка кол-ва оповещений будет

o = k * N**2

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

Что касается конкретно предлагаемого решения — с KILL —
тут есть два недостатка

* kill внутри сервера не работает синхронно. Т.е. будет какая-то задержка.
(но это не сильно важно)

* при большой нагрузке клиенты тупо не успеют устанавливать соединения с
сервером, поскольку установка соединения — достаточно длительная операция.
Но, конечно, при вялом изменнеии данных схема работать будет.
Posted via RSDN NNTP Server 2.1 beta
Re: Отследить изменение
От: _d_m_  
Дата: 27.04.08 08:54
Оценка: 3 (1)
Здравствуйте, potap, Вы писали:

P>Здравствуйте,

P>можно ли в программе, написанной в Visual Studio 6, отследить изменения (получить извещение), сделанные в определенной таблице базы на MS SQL ?
P>База доступна для необходимых добавлений.
P>Заранее спасибо.

MS SQL 2005 Service Broker
Re: Отследить изменение
От: vmpire Россия  
Дата: 28.04.08 07:11
Оценка: 3 (1)
Здравствуйте, potap, Вы писали:

P>Здравствуйте,

P>можно ли в программе, написанной в Visual Studio 6, отследить изменения (получить извещение), сделанные в определенной таблице базы на MS SQL ?
P>База доступна для необходимых добавлений.
P>Заранее спасибо.

Ещё можно держать соединение из всех клиентов, крутиться там в цикле (while + delay), проверять условие и, когда надо, посылать сообщение через raiserror с кодом меньше 10. Из SqlConnection придёт отличный event. Я так делал, работает, начиная с MSSQL2000.
Но, если клиентов больше сотни, то надо искать другой подход. Тот же сервис-брокер, например, хотя, это уже MSSQL2005.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.