Home  >  Article  >  Database  >  Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结

Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结

WBOY
WBOYOriginal
2016-06-07 15:03:411164browse

Sql server 7.0/2000下 SqlCacheDependency 使用 轮询的方式进行缓存失效检查, 虽然ms说对服务器压力不大, 但还是有一些的, 而且对于不常改动的混存内容无休止的轮询感觉有点浪费, 不很经济. Sql server 2005/2008下增加 使用 查询 通知 方式进行缓存失效检

Sql server 7.0/2000下 SqlCacheDependency使用轮询的方式进行缓存失效检查, 虽然ms说对服务器压力不大, 但还是有一些的, 而且对于不常改动的混存内容无休止的轮询感觉有点浪费, 不很经济.

Sql server 2005/2008下增加使用查询通知方式进行缓存失效检查, 它通过Sql Server内部的消息队列进行异步通知, 这样就大大减轻了服务器的压力, 实现的很经济, 下面就是具体的步骤:

1.检测是否已经启用Service Broker

Select DATABASEpRoPERTYEX('数据库名称','IsBrokerEnabled')  -- 1 表示已经启用 0 表示没有启用

2.启用Service Broker                   

ALTER DATABASE 数据库名称 SET ENABLE_BROKER;                 

注意:如果执行此语句处于假死状态,请重启(restart)数据库,然后什么都别做, 先执行上面启用Service Broker这个语句就行了!

3.给您的数据库访问帐号授予权限

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO test

注意:这一步非常重要, 如果没有权限, 数据库改变的通知将无法接收, cache永远都不会被刷新,我开始是用的sa帐号,死活都不刷新,花了我两天时间调试这个问题, 还是无法给sa授此权限(ms禁止), 所以,换个数据库访问帐号即可.

4.确定数据库连接字符串.

您可以在web.config里增加一个数据库连接字符串.

  <connectionstrings><br>    <add></add>    providerName="System.Data.sqlClient"/><br>  </connectionstrings><br>  <system.web><br>  </system.web>

1 2  下一页

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn