我的需求是在Key值表之上构建一个简单的配置框架。由于这是经常使用的并且很少更改,因此更愿意缓存表值。一个要求是如果在DB中更改了值,它应立即反映在App中。所以,我计划实施SqlCacheDependency。 Doc说
SQL Server 2005的查询通知机制检测到更改 数据使SQL查询的结果无效并删除任何 缓存与SQL查询关联的项目 的System.Web.Caching.Cache
从示例中我注意到配置中有一个名为PollTime的属性。 Doc说
获取或设置SqlCacheDependency轮询的频率 数据库表进行更改。
我对这是否使用查询通知技术或使用轮询机制感到困惑。
我的堆栈是.NET 4.0和SQL Server 2008 R2。
答案 0 :(得分:4)
从SqlServer 2005开始(因此适用于sqlserver 2008R2),Sql Cache Dependency通过使用查询更改通知机制来工作。它们使用内置于数据库中的通知基础结构和消息传递系统,称为Service Broker
Sql server 2000及更早版本采用了轮询机制。
您可能对以下建议的进一步阅读感兴趣::
Jess Liberty ,书籍作者: asp.net编程(Oreilly Media)说:
不需要使用aspnet_regsql.exe
配置数据库,如果您使用带有查询通知机制的sqlserver 2005或更高版本,则无需在<sqlCacheDependency>
中添加web.config
元素。
MSDN
还说::当<sqlCacheDependency>
元素与SQL Server 2005上的查询通知一起使用时,此配置设置即sqlCacheDependency
无效。这样做表示使用查询通知时设置pollTime
无效。