Как уведомить службу Windows (c #) об изменении таблицы БД (sql 2005)?

У меня есть таблица с большой нагрузкой (много вставок / обновлений / удалений) в базе данных SQL2005. Я хотел бы сделать некоторую постобработку для всех этих изменений как можно ближе к реальному времени (асинхронно, чтобы никоим образом не блокировать таблицу). Я посмотрел несколько возможных решений, но просто не могу найти одно изящное решение, которое кажется правильным.

Тип постобработки также довольно тяжелый, настолько, что служба прослушивания Windows фактически передает обработку нескольким машинам. Однако эта часть приложения уже запущена и работает, она полностью асинхронная, и это не то, что мне нужно для помощи - я просто хотела упомянуть об этом просто потому, что это влияет на проектное решение, поскольку мы не могли просто загрузить некоторый объект CLR в БД для завершения обработки.

Итак, остается простая проблема: изменения данных в таблице, я хочу сделать некоторую обработку в коде C # на удаленном сервере.

В настоящее время мы придумали использовать SQL-триггер, который выполняет "xp_cmdshell", чтобы запустить exe-файл, который вызывает событие, которое ожидает служба Windows. Это просто плохо.

Тем не менее, другие решения, на которые я смотрел онлайн, также выглядят довольно запутанными. Например, настройка SQLCacheDependancy также требует настройки компонента Service Broker. Другим возможным решением является использование триггера CLR, который может вызывать веб-сервис, но в Интернете так много предупреждений о том, что это плохой способ сделать это, особенно когда производительность критична.

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

Любая помощь будет наиболее ценной.

Резюме:

Необходимо реагировать на изменения данных таблицы в режиме реального времениПроизводительность имеет решающее значениеОжидается большой объем трафикаОпрос и запланированные задачи не вариант (или в режиме реального времени)Реализация сервисного брокера слишком велика (но может быть единственным решением?)Код CLR еще не исключен, но должен предлагаться, если предложеноСлушатель / монитор может быть удаленным компьютером (вероятно, это та же физическая сеть)

Ответы на вопрос(5)

Ваш ответ на вопрос