首先第一步是确保您的 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. 数据库Oracle的子查询练习

    1.写一个查询显示与 Zlotkey 的 在同一部门的雇员的 last name和 hire date,结果中不包括 Zlotkey --1.写一个查询显示与 Zlotkey 的 在同一部门的雇员的 ...

  2. Spring简介即Spring Ioc

    Spring框架简介 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE De ...

  3. [TimLinux] MySQL InnoDB的外键约束不支持set default引用选项

    1. 外键 MySQL的MyISAM是不支持外键的,InnoDB支持外键,外键是MySQL中的三大约束中的一类:主键约束(PRIMARY KEY),唯一性约束(UNIQUE),外键约束(FOREIGN ...

  4. CoderForces-913-C

    A New Year party is not a New Year party without lemonade! As usual, you are expecting a lot of gues ...

  5. 首次自动化测试,使用selenium+scapy

    痛苦而艰难 才写出这一点点,这是个登陆测试 main # -*- coding: utf-8 -*- from selenium import webdriver import login_tst i ...

  6. ARTS-S linux常用命令

    压缩 把文件夹test压缩成test.tar.gz tar -czvf test.tar.gz test centos同步网上时间 cp /usr/share/zoneinfo/Asia/Shangh ...

  7. 基于iCamera测试光电大赛官方指定摄像头mt9m001调试小结

    基于iCamera测试光电大赛官方指定摄像头mt9m001调试小结 先看看官方的接口 组委会指定的模块接口 信号定义说明: VDD:3.3v GND:地 SCK:摄像头寄存器的iic配置信号的时钟线 ...

  8. 最新115道华为、京东、滴滴、美团精选Java面试题整理

    京东面试题 1. 一般sql注入怎么发现触点的,从源码阐述sqlmap如何测试注入点的. 2. masscan扫描端口时靠什么检测,为什么这么快? 请详述. 3. 你写过哪些小工具,你为你使用过的工具 ...

  9. C#通过WMI获取硬件信息

    有时候需要得到硬件信息绑定用户登录 代码如下: private string GetProcessSerialNumber() { try { ManagementObjectCollection P ...

  10. C#访问SFTP:Renci.SshNet.Async

    SFTP是SSH File Transfer Protocol的缩写,安全文件传送协议.安全文件传送协议.可以为传输文件提供一种安全的网络的加密方法.sftp 与 ftp 有着几乎一样的语法和功能. ...