我在网站里用了sql2005里的缓存依赖机制(行依赖),在本机与测试服务器上都调试通过没问题了,但是一到正式环境上,依赖的行发生变化时,缓存未失效。我估计好像是service broker没有发消息通知网站更新缓存。
  正式环境与测试环境基本一样,都是一台数据库、两台WEB,数据库的用户权限也是一样的。
  请帮忙分析一下,什么地方的配置可能会有问题。

解决方案 »

  1.   

    service broker 可启用了...
    右击单击数据库属性->选项->看看service broker 启用是不是true...
      

  2.   

    asp.net利用service broker设置数据库缓存依赖有很多的限制,有点鸡肋的说。个人觉得,利用触发器更新文本文件,然后设置缓存的文件依赖,可控性,稳定性,可操作性都比service broker要好。楼主可以考滤一下这个方案。
      

  3.   

    完全不工作? 
    检查一下 sysprocess, 正常情况下, 连接建立后, 里面应该有一条 service broker 进程的记录
      

  4.   

    好像也不是完全不工作,有时候依赖更改以后,缓存能马上失效,有时候就不失效。 
    是不是有一台WEB服务器接收到了通知,另一台WEB服务器没接收到通知。
      

  5.   

    如果 sysprocess 里面没有 service broker 的进程记录, 那说明是 service broker 配置有问题
      

  6.   

    邹老大,我去正式环境数据库里查了,sysprocess表里有查询通知的那条进程记录的。 
    去正式环境上查一次不容易啊。  :'(
      

  7.   


    刚刚去查了sys.conversation_endpoints这个系统表里有记录,sys.transmission_queue 这个系统表里没记录,是不是表示没有发送不成功的消息? 那为什么依赖项改变后缓存就是没失效呢。