首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教关于使用SqlCacheDependency 和数据缓存 [无满意答案结帖,结帖人:adow]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • adow
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2007-10-14 22: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了吧?
    那还有什么地方有可能有问题呢?谢谢
    60  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • adow
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-10-14 22:55:041楼 得分:0
    是不是我还需要安装消息服务的组建?
    能有什么地方看出来每次更改都有通知发出来吗?我在sqlserver management studio 中好像没有看到有通知发出。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xuebin_hu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-10-15 09:50:572楼 得分:0
    用的是什么数据库如果是2000的话要设置才可以用这个功能,其实你可以看看PetShop,对于这个功能解释的很清楚!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • JGood
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-10-15 09:54:383楼 得分:0
    楼主用的是SQLServer2005吗?

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

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • adow
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-10-15 11:46:494楼 得分:0
    我的确使用的是sql server 2005 express
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • adow
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-10-15 11:48:005楼 得分:0
    因为我在vista下装的只能装express,不过查找的is_broker_enabled=1
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • adow
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-10-16 09:56:376楼 得分:0
    当我更新数据后,我能看到Service Boroker 的队列中多出一条:
    SqlQueryNotificationService-4df86373-419c-4907-9fd1-e5015f776da8
    在活动监视器里 他的状态一直是suspended
    是哪里没有接收到这条通知吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • seafarer777
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-11-06 14:03:537楼 得分:0
    估计跟你的sql版本有关,换服务区版本试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ll_e_mail
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-17 16:11:098楼 得分:0
    我有遇到时同类问题
    修改 删除 举报 引用 回复