Слушатель изменений базы данных SQL Server C # - PullRequest
19 голосов
/ 29 июля 2010

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

Я использую Linq-To-SQL для доступа к данным и, следовательно, имею DataContext объект, я надеялся, что смогу прослушать событие изменения данных, но не могу его найти.

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

Хотя это не для работы с графическим интерфейсом, я ожидал адаптироватьсячто-то из этого царства.

Есть ли способ подписаться на события изменения базы данных SQL Server в C #?

Ответы [ 5 ]

6 голосов
/ 29 июля 2010

Я никогда не использовал их раньше, но пробовали ли вы уведомления о событиях SQL Server? См. Эту статью: Начало работы с уведомлениями о событиях SQL Server

6 голосов
/ 29 июля 2010

Вы ищете класс SqlDependency , который позволяет прослушивать изменения в наборе результатов запроса SQL.

3 голосов
/ 29 июля 2010

DataContext не предложит вам никакой функциональности слушателя с SQL Server. Лучше всего создать приложение для опроса или даже отдельный поток, который периодически опрашивает базу данных на предмет изменений и выставляет событие, которое может прослушивать ваше основное приложение.

1 голос
/ 29 июля 2010

Если вы используете SQL Server 2008, есть встроенный сбор данных изменений, который очень удобен.

http://msdn.microsoft.com/en-us/library/bb522489.aspx

Вы можете прочитать данные CDC.

0 голосов
/ 29 июля 2010

Я бы использовал таблицу с одной строкой в ​​БД для каталогизации последних обновленных, вставленных или удаленных событий, а затем создал бы триггеры в каждой важной таблице, чтобы обновить эту таблицу, а затем опросить эту таблицу на предмет изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...