Уведомление об изменении с SQL-сервером 2008

Вы можете установить "strictNullChecks": false в compilerOptions вашего tsconfig.json.

Подробнее см. в этом ответе и в этой ссылке.

35
задан Cade Roux 27 May 2009 в 20:59
поделиться

4 ответа

Да, в этом сообщении блога объясняется, что службы Notification Services теперь не рекомендуются, а также то, какие замены или альтернативы будут в будущем.

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

Мне не удалось выяснить, продолжает ли SqlDependency работать с устаревшими службами Notification Services.

3
ответ дан 27 November 2019 в 15:46
поделиться

Существует несколько различных способов отслеживания изменений в базе данных: либо с помощью триггеров, которые поддерживают временные структуры, такие как невыполненные отчеты, журналы отслеживания (также известные как «таблицы аудита»), либо с помощью отслеживания изменений. возможности в SQL 2008 как ссылки в другом ответе. Независимо от того, какой механизм вы используете, у вас есть проблема с уведомлением об изменении в собственной службе. Для этого вы можете использовать Service Broker и активацию на основе событий. Из того, что вы описываете, похоже, что приложение ожидает события из очереди. http://msdn.microsoft.com/en-us/library/ms171581.aspx

Если вы не хотите, чтобы служба оставалась в очереди и спала в очереди, вы можете исследовать возможность запуска службы в жизнь «по запросу» с помощью внешнего механизма активации в брокере услуг.

3
ответ дан 27 November 2019 в 15:46
поделиться

Вы можете использовать System.Data.SqlClient.SqlDependency (который работает с компонентом Service Broker), чтобы подписаться на изменения в таблице.

2
ответ дан 27 November 2019 в 15:46
поделиться

Службы Notification Services устарели, но вы все равно не хотите их использовать.

В некоторых сценариях можно рассмотреть сообщения компонента Service Broker; детали зависят от вашего приложения.

В большинстве случаев вы, вероятно, можете использовать SqlDependency или SqlCacheDependency. Принцип их работы заключается в том, что вы включаете объект SqlDependency в свой запрос при его выполнении. Запрос может представлять собой одиночный SELECT или сложную группу команд в хранимой процедуре.

Когда-нибудь позже, если другой веб-сервер, пользователь или веб-страница внесут изменения в БД, которые могут привести к изменению результатов предыдущего запроса , то SQL Server отправит уведомление всем серверам, на которых зарегистрированы объекты SqlDependency. Вы можете либо зарегистрировать код для запуска при появлении этих событий, либо событие может просто очистить запись в кэше.

Хотя вам нужно включить компонент Service Broker для использования SqlDependency, вам не нужно взаимодействовать с ним явно. Однако вы также можете использовать его как альтернативный механизм; думайте об этом больше как о системе постоянного обмена сообщениями, которая гарантирует порядок сообщений и единовременную доставку.

Подробности использования этих систем немного длинны для сообщения на форуме. Вы можете найти их в Google, или я также приведу примеры в своей книге ( Сверхбыстрый ASP.NET ).

18
ответ дан 27 November 2019 в 15:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: