请教关于使用SqlCacheDependency 和数据缓存

adow 2007-10-14 10:52:43
不知道我是不是理解错误了,我设置一个Cache和数据库中表tb_cache关联,希望在这个表更改时会能时cache失效。但是,好像没有反映。
protected void Page_Load(object sender, EventArgs e)
{

DateTime storetime=new DateTime ();
if (Cache["storetime"] == null)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cachecon"].ConnectionString);
con.Open();
SqlCommand command = new SqlCommand("select id,sign from dbo.tb_cache where id=3",con);
SqlCacheDependency sp = new SqlCacheDependency(command);

storetime = DateTime.Now;
this.Cache.Insert("storetime", storetime,sp, DateTime.Now.AddSeconds(60), System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.High, null);
}
else
{
storetime=(DateTime)Cache["storetime"];
}
lit_time.Text = "storetime:"+storetime.ToString();
}


我在另一个页面中执行修改id=3的记录,
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cachecon"].ConnectionString);
con.Open();
SqlCommand command = new SqlCommand("update tb_cache set sign='"+DateTime.Now.ToString ()+"' where id=3", con);
int returnvalue=command.ExecuteNonQuery();
this.Response.Write(returnvalue.ToString());

可当我修改后,刷新原来的页面还是缓存中的内容。
global.asax中也写了
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
System.Data.SqlClient.SqlDependency.Start(ConfigurationManager.ConnectionStrings["cachecon"].ConnectionString);

}

void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
System.Data.SqlClient.SqlDependency.Stop(ConfigurationManager.ConnectionStrings["cachecon"].ConnectionString);

}

请问是不是我的数据库里设置的有问题,需要我开启什么,链接时我是使用的sa帐号进行数据库访问的。
通过SELECT * FROM sys.databases,查找到我用的那个库的is_broker_enabled=1,这个应该是已经开启了broker_service了吧?
那还有什么地方有可能有问题呢?谢谢
...全文
720 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
IFocusYou 2011-07-04
  • 打赏
  • 举报
回复
我晕,你得让db的table支持SqlCacheDependency才可以的呀。
mangchao330688 2010-09-26
  • 打赏
  • 举报
回复
啊,真没人能解决啊。我也遇到这个问题了。郁闷。
leveretzhang 2010-07-01
  • 打赏
  • 举报
回复
好象就没有人成功过!我也是同样的问题,就没有见到过一个成功的案例!
King_Killer_L 2009-09-10
  • 打赏
  • 举报
回复
我今天也遇到了
真实郁闷,哎,都没人解决的
ll_e_mail 2007-12-17
  • 打赏
  • 举报
回复
我有遇到时同类问题
seafarer777 2007-11-06
  • 打赏
  • 举报
回复
估计跟你的sql版本有关,换服务区版本试试
adow 2007-10-16
  • 打赏
  • 举报
回复
当我更新数据后,我能看到Service Boroker 的队列中多出一条:
SqlQueryNotificationService-4df86373-419c-4907-9fd1-e5015f776da8
在活动监视器里 他的状态一直是suspended
是哪里没有接收到这条通知吗?
adow 2007-10-15
  • 打赏
  • 举报
回复
因为我在vista下装的只能装express,不过查找的is_broker_enabled=1
adow 2007-10-15
  • 打赏
  • 举报
回复
我的确使用的是sql server 2005 express
JGood 2007-10-15
  • 打赏
  • 举报
回复
楼主用的是SQLServer2005吗?

//注意
SqlCacheDependency sp = new SqlCacheDependency(command);
此构造函数用于创建使用 SQL Server 2005 产品的查询通知功能的 SqlCacheDependency 对象。

xuebin_hu 2007-10-15
  • 打赏
  • 举报
回复
用的是什么数据库如果是2000的话要设置才可以用这个功能,其实你可以看看PetShop,对于这个功能解释的很清楚!
adow 2007-10-14
  • 打赏
  • 举报
回复
是不是我还需要安装消息服务的组建?
能有什么地方看出来每次更改都有通知发出来吗?我在sqlserver management studio 中好像没有看到有通知发出。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧