2014-10-02 3 views
0

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

Есть ли способ получить эту функциональность от MS SQL Server? То есть если я хочу кэшировать определенные агрегированные значения в таблице базы данных, которые иногда меняются, как я могу узнать, когда нужно сделать недействительным кеш? Или это единственный способ сделать это, чтобы реализовать его программно и сохранить его во время записи в базу данных?

Я использую C# .NET 4.5 для доступа к SQL Server 2008 R2 через NHibernate.

+0

Возможно, вы ищете 'SQL invalidation' – Rahul

ответ

0

Я предлагаю вам подумать о своей проблеме с точки зрения кэширования данных уровня приложения вместо низкоуровневых страниц SQL Server. Вы можете использовать SqlDependency или QueryNotification в своем коде C#, чтобы получать уведомления об изменениях в базовых данных. Обратите внимание, что для этого требуется, чтобы ServericeBroker был включен в базе данных SQL Server, и есть некоторые ограничения на запросы, которые квалифицируются для уведомления.

См. http://www.codeproject.com/Articles/529016/NHibernate-Second-Level-Caching-Implementation для примера использования этого в NHibernate.

Смежные вопросы