• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

请教关于使用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了吧?
那还有什么地方有可能有问题呢?谢谢
...全文
607 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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 中好像没有看到有通知发出。
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2007-10-14 10:52
社区公告
暂无公告