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.
Отследить изменение
От: 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.