Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Обработка события вставки, или обновления таблицы  [new]
Zed4ever
Member

Откуда: НН
Сообщений: 9
Доброе время суток!
Подскажите, пожалуйста, с решением следующей задачи.

Что имею:
На одном сервере существует несколько БД (формируются динамически) + "главная" БД, которая хранит ХП, осуществляющие доступ к любым таблицам любой БД.
В каждой из БД имеется набор таблиц, часть которых существуют уже при создании БД, а часть генерируется динамически.
Все вставки и обновления в конкретную таблицу конкретной БД-ы осуществляется средствами ХП из состава "главной" БД, в которую задаются параметры влияющие на то, в какую таблицу будут вставлены/обновлены данные.
(Если очень интересно зачем так сделано - расскажу отдельно).

Теперь суть вопроса:
Необходимо при вставке/обновлении некоторых данных в таблицы (в основном в те, которые формируются динамически) сгенерировать событие для внешнего приложения (написано на c#).
Изначально начал копать в направлении EVENT-ов, и Service Broker.
Вариант с триггерами - не очень подходит, т.к. таблицы (в основном), за которыми надо следить динамически создаются в динамически создаваемых БД.
Однако, мне не удалось найти перимеров как засунуть во внешнее .Net приложение данные из очереди Service Broker-а.
Нашёл только пару постов на форумах, что "2-ю неделю безрезультатно насилую гугл".
На стороне сервера желательно использовать только T-SQL для решения.

Требования к оперативности получения информации внешним приложением: секунда - хорошо, 3 - тоже сойдёт.
Приложение и SQL Server находятся на одном железе, сервер 2008r2 Express.

Если не трудно - скиньте кусок кода (ссылку) для сервера и приложения.

В параллель возник ещё вопрос - а с помощью EVENT (http://msdn.microsoft.com/ru-ru/library/ms189453.aspx) можно отследить событие INSERT и UPDATE? Вот тут (http://msdn.microsoft.com/ru-ru/library/bb522542.aspx) я их не обнаружил. "DML" подобных событий обработать с их помошью не получиться?
Вот тут (https://www.sql.ru/forum/actualthread.aspx?tid=925185&hl=%f1%ee%e1%fb%f2%e8%e5), вроде, советуют пользоваться именно ими, или я чего-то не понял?:)
WMI - тоже не желательно использовать.

Как альтернативное решение, которое сразу пришло в голову - это было использовать "буферную" таблицу эвентов, которую бы приложение периодически читало, и далее чистило через вызов ХП.

Или, может, посоветуете более правильное решение данной задачи?

Заранее спасибо.

З.Ы. Топики, которые я нашёл на этом форуме обсуждали подобные проблемы, однако всё заканчивалось обменом сообщениями между 2-я SQL серверами, так что прошу сильно не пинать, если тема дубликат.
29 мар 12, 22:19    [12336743]     Ответить | Цитировать Сообщить модератору
 Re: Обработка события вставки, или обновления таблицы  [new]
Zed4ever
Member

Откуда: НН
Сообщений: 9
Прямо, таки, нет предложений?:)
30 мар 12, 19:18    [12342827]     Ответить | Цитировать Сообщить модератору
 Re: Обработка события вставки, или обновления таблицы  [new]
Alexander Karavaev
Member

Откуда: Москва
Сообщений: 40
А чем не нравится идея использовать SqlDependency и обработать OnChange?
30 мар 12, 19:46    [12342934]     Ответить | Цитировать Сообщить модератору
 Re: Обработка события вставки, или обновления таблицы  [new]
Zed4ever
Member

Откуда: НН
Сообщений: 9
https://www.sql.ru/forum/actualthread.aspx?tid=842668
Вот этим, а таймер не хочется использовать. Или я зря "поверил наслово"?
31 мар 12, 22:36    [12346173]     Ответить | Цитировать Сообщить модератору
 Re: Обработка события вставки, или обновления таблицы  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Zed4ever
(Если очень интересно зачем так сделано - расскажу отдельно).

Уж расскажите.

Я так понял, весь поток мысли сводится к "оповещению клиента"
31 мар 12, 23:25    [12346324]     Ответить | Цитировать Сообщить модератору
 Re: Обработка события вставки, или обновления таблицы  [new]
Zed4ever
Member

Откуда: НН
Сообщений: 9
SomewhereSomehow
Zed4ever
(Если очень интересно зачем так сделано - расскажу отдельно).

Уж расскажите.
Я так понял, весь поток мысли сводится к "оповещению клиента"

Большое спасибо!
Нашёл много интересного.
Я, видимо, не по тем словосочетаниям искал:)
З.Ы. Если очень коротко, то для того, чтобы свести нагрузку на систему к минимуму и не упираться в ограничения Express.
1 апр 12, 02:05    [12346587]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить