уведомление об обновлении базы данных в трее - PullRequest
7 голосов
/ 03 августа 2010

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

Что является самым простымспособ сделать это, как я хочу, чтобы избежать опроса, если это возможно?

Ответы [ 3 ]

7 голосов
/ 11 августа 2010

Уведомления о запросах .Это функция SQL Server, которая позволяет приложению подписываться на уведомления, отправляемые с сервера при изменении данных.Обычно он используется через класс SqlDependency .

Недавно я опубликовал проект LinqToCache , который позволяет добавлять уведомления на основе SqlDependency и аннулирование кэша в запросах LINQ:

var query = (from r in ctx.table select r).AsCached(
 "table", new CachedQueryOptions() {
    OnInvalidated = (sender, args) {
      // the query was invalidated, data has changed
      // refresh display or notify user
    }
 });
2 голосов
/ 03 августа 2010

Расширенные хранимые процедуры - это то, о чем я подумал в первую очередь, и, вероятно, это решение, которое я бы использовал, если бы хотел запустить приложение мониторинга на самом SQL Server.Но я предполагаю, что это, вероятно, не тот случай.

Я бы сам предложил использовать MSMQ в качестве промежуточного уровня, поскольку в наши дни он поставляется практически со всеми версиями Windows и более или менее сделан на заказдля такого рода вещей.Итак, пройдя по слоям, здесь у вас есть:

  1. Триггеры UPDATE и INSERT для вашей определенной таблицы, которые вызывают ...
  2. ... сборку .NET (добавленоиспользуя интеграцию CLR), который ...
  3. ... помещает сообщение, описывающее вставку / обновление, в очередь MSMQ на сервере, которая ...
  4. ... принимаетсяваше приложение в трее, где бы оно ни работало ...
  5. ... и затем отображалось.

Здесь приведен пример кода для доступа к MSMQ из SQL Server: http://www.codeproject.com/KB/database/SqlMSMQ.aspx

1 голос
/ 03 августа 2010

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

Может быть, эта ссылка лучше.

...