首先第一步是确保您的 Service Broker 已经激活,激活 Service Broker (Transact-SQL)如下:

USE master ; GO

ALTER DATABASE YouDatabase SET ENABLE_BROKER ; GO

如果您的数据库与应用程序是分布在网络上的两台服务器上,那么您有必要激活 Service Broker 网络(Transact-SQL)

创建 Service Broker 端点,其间指定端口号和身份验证级别,代码如下:

USE YouDataBase; GO

CREATE ENDPOINT BrokerEndpoint     STATE = STARTED     AS TCP ( LISTENER_PORT = 4037 )     FOR SERVICE_BROKER ( AUTHENTICATION = WINDOWS ) ; GO

接下来是实现在asp.net 2.0缓存的Demo (以下内容引用自由港 http://www.cnblogs.com/yg_zhang/archive/2006/09/20/508961.html 非常感谢他)

1.首先在sqlserver2005 中创建一个test的数据库.添加一个 employee的数据库表.

CREATE TABLE [dbo].[employee]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [varchar](50)

2使用 vs2005 创建一个新的asp.net项目.

web.config如下

 <?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings/>
<connectionStrings>
<add name="mySource" connectionString="Data Source=./sql2005;Initial Catalog=test;Persist Security Info=True;User ID=sa;Password=sasa" providerName="System.Data.SqlClient"></add>
</connectionStrings>
<system.web>
<compilation debug="true"/>
<authentication mode="Windows"/>
</system.web>
</configuration>

3.编写global.asax文件,启动监听sql2005通知事件.

.<%@ Application Language="C#" %>
.<%@ Import Namespace="System.Data.SqlClient" %>
.
.<script runat="server">
.
. void Application_Start(object sender, EventArgs e)
. {
. string connStr=ConfigurationManager.ConnectionStrings["mySource"].ConnectionString;
. SqlDependency.Start(connStr);
. }
.
. void Application_End(object sender, EventArgs e)
. {
. string connStr = ConfigurationManager.ConnectionStrings["mySource"].ConnectionString;
. SqlDependency.Stop(connStr);
. }
.</script>

4.编写数据访问代码.创建一个EmployeeData的类,代码如下

.using System;
.using System.Data;
.using System.Data.SqlClient;
.using System.Configuration;
.using System.Data.Common;
.using System.Web;
.using System.Web.Caching;
.using System.Web.Security;
.using System.Web.UI;
.using System.Web.UI.WebControls;
.using System.Web.UI.WebControls.WebParts;
.using System.Web.UI.HtmlControls;
.
./**//// <summary>
./// EmployeeData 的摘要说明
./// </summary>
.public class EmployeeData
.{
. public EmployeeData()
. {
. }
.
. private HttpContext context;
.
. public DataSet GetCacheData()
. {
. context = HttpContext.Current;
. DataSet cache =(DataSet) context.Cache["employee"];
. if (cache == null)
. {
. return GetData();
. }
. else
. {
. return cache;
. }
. }
.
.
. public DataSet GetData()
. {
. string connStr = ConfigurationManager.ConnectionStrings["mySource"].ConnectionString;
. SqlConnection conn = new SqlConnection(connStr);
. SqlDataAdapter adp = new SqlDataAdapter("select id,name from dbo.employee", conn);
. SqlCacheDependency dep = new SqlCacheDependency(adp.SelectCommand);
. DataSet ds=new DataSet();
. adp.Fill(ds);
. context.Cache.Add("employee", ds, dep, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, new CacheItemRemovedCallback(this.DataDiff));
. return ds;
. }
.
. public void DataDiff(string key, object value, CacheItemRemovedReason reason)
. {
. Console.WriteLine("key:" + key);
. GetData();
. }
.
.}

这里需要注意的是 select语句的写法, 不能使用 select *  的方式,一定要在表名前加架构名称 如我们这里的 dbo.employee.

5.编写测试页面代码.

1.<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
2.
3.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4.
5.<html xmlns="http://www.w3.org/1999/xhtml" >
6.<head runat="server">
7. <title>无标题页</title>
8.</head>
9.<body>
10. <form id="form1" runat="server">
11. <div>
12. <asp:GridView ID="GridView1" runat="server" >
13. </asp:GridView>
14. </div>
15. </form>
16.</body>
17.</html>
18.

6.插入后台代码

.using System;
.using System.Data;
.using System.Configuration;
.using System.Web.Caching;
.using System.Data.SqlClient;
.using System.Web;
.using System.Web.Security;
.using System.Web.UI;
.using System.Web.UI.WebControls;
.using System.Web.UI.WebControls.WebParts;
.using System.Web.UI.HtmlControls;
.
.public partial class _Default : System.Web.UI.Page
.{
. protected void Page_Load(object sender, EventArgs e)
. {
. EmployeeData em=new EmployeeData();
. GridView1.DataSource = em.GetCacheData();
. GridView1.DataBind();
. }
.
.}

asp.net实现SQL2005的通知数据缓存的更多相关文章

  1. cache应用(asp.net 2.0 SQL数据缓存依赖 [SqlCacheDependency ] )

    Asp.net 2.0 提供了一个新的数据缓存功能,就是利用sql server2005 的异步通知功能来实现缓存 1.首先在sqlserver2005 中创建一个test的数据库. 在SQL Ser ...

  2. 我用ASP.NET缓存之SQL数据缓存依赖(SqlCacheDependency)

    [名词解释] 缓存(Cache)依赖,大白话解释就是缓存是否更新依赖于其它Object.那么SqlCacheDependency指的就是Cache的数据更新依赖于SQL Server数据库表的变化(  ...

  3. ASP.NET缓存全解析4:应用程序数据缓存 转自网络原文作者李天平

    System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类.此命名空间包括 Cache 类,该类是一个字典,您可以在其中存储任意数据对象,如哈希表和数据集.它还为这些对象提供了失效 ...

  4. SQL server数据缓存依赖

    SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1  轮询模式实现步骤 此模式需要SQL SERVER 7.0/2000/2005版本以上版本都支持        主要包含以下几 ...

  5. SQL数据缓存依赖总结

    以前只听过SQL server数据缓存依赖,但一直没使用,由于项目需要,才研究了一番,发现了一个很诡异的问题,竟然是一个操作顺序问题导致的. SQL server数据缓存依赖有两种实现模式,轮询模式, ...

  6. SQL数据缓存依赖 [SqlServer | Cache | SqlCacheDependency ]

    前言 本文主要是对<ASP.NET 2.0开发指南>——<数据缓存>章节内容的提取并略有补充. 参考资料 1.     <ASP.NET 2.0开发指南> 2.   ...

  7. ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存

    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完 ...

  8. ASP.NET多种不同页面间数据传递的方法

    1. Get(即使用QueryString显式传递)     方式:在url后面跟参数.     特点:简单.方便.     缺点:字符串长度最长为255个字符:数据泄漏在url中.     适用数据 ...

  9. jQuery源代码学习之六——jQuery数据缓存Data

    一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所 ...

随机推荐

  1. 回文自动机(PAM) 入门讲解

    处理回文串,Manacher算法也是很不错,但在有些问题的处理上比较麻烦,比如求本质不同的子串的数量还需要结合后缀数组才能解决.今天的们介绍一种能够方便的解决关于回文串的问题的算法--PAM. 一些功 ...

  2. LightOJ1199 Partition Game

    Alice and Bob are playing a strange game. The rules of the game are: Initially there are n piles. A ...

  3. UESTC-1964命运石之门(类似SPFA的BFS)

    命运石之门 Time Limit: 1000 MS     Memory Limit: 256 MB Submit Status "这一切都是命运石之门的选择!" 凶真博士发明了能 ...

  4. Flume理论研究与实验

    一.理论研究 1.1 总览 Flume是一个分布式的可靠的日志收集系统,主要是用于从各种数据源收集.聚合并移动大批量的日志数据到存储系统:它本身具有许多故障转移和恢复机制,具有强大的容错能力:它使用下 ...

  5. JavaScript数组去重(12种方法,史上最全)

    参考博客:https://segmentfault.com/a/1190000016418021?utm_source=tag-newest

  6. Hadoop相关问题解决

    Hadoop相关问题解决 Hive 1.查询hivemeta信息,查到的numRows为-1 集群厂商 集群版本 是否高可用 是否开启认证 cdh 不限 不限 不限 在hivemeta库中可以通过以下 ...

  7. android studio 软件常见问题

    xml文件没有智能提示 在网上看到说是去掉省电模式就可以了 然后我试了一下并不能解决, 最终我是这么解决的

  8. MySql 5.7.28 安装注意事项

    刚好最近用到了5.7,所以顺便整理记录一下,5.7与5.6的区别是5.7不可以使用空密码直接登录 下载地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mys ...

  9. test-hellow world!

    //for C #include<stdio.h> int main() { printf("hellow world!"); return 0; } #for pyt ...

  10. 后台管理tab栏滑动解决方案

    后台管理系统中比较常见的布局是左边菜单栏,右边tab切换栏,但是一般的tab组件不包含tab页过多的切换问题的,所以需要个性化实现,本文的实现方案是滑动鼠标滚轮绑定tab达到切换的效果,先上一个动态图 ...