1.检查当前数据库是否启动SQL Server Service Broker,检测方法:
SELECT is_broker_enabled FROM sys.databases WHERE name = '数据库名'或者
Select DATABASEpRoPERTYEX('数据库名','IsBrokerEnabled')-- (1 为已启用,0为未启用)
如果当前数据库没有启动SQL Server Service Broker,可以执行:
ALTER DATABASE 数据库名 SET ENABLE_BROKER
2.在SQL Server中实现数据缓存依赖,需要显式调用 SqlDependency.Start()方法来启动接收依赖项更改通知的侦听器。通常在global.asax文件的 Application_Start()方法中实现调用。
void Application_Start(object sender, EventArgs e) { //在应用程序启动时运行的代码 System.Data.SqlClient.SqlDependency.Start(string connectionString); //开启SQLServer数据缓存依赖 } void Application_End(object sender, EventArgs e) { //在应用程序关闭时运行的代码 System.Data.SqlClient.SqlDependency.Stop(string connectionString); //关闭SQLServer数据缓存依赖 }
从上面的代码段中我们可以看出start()方法中的一个参数是数据库连接字符串,我们要将其保存在配置文件web.config中。启用SqlCacheDependency
3.在代码中使用缓存,并为其设置SqlCacheDependency依赖:
public void User_Bind() { DataSet ds; string connstr=System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; if (Cache["userinfo"] == null) { SqlConnection conn = new SqlConnection(connstr); SqlCommand cmd = new SqlCommand("select userName,Address from dbo.Tab_user", conn); ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(ds); //启动监听 SqlDependency.Start(connstr); //启用更改通知 SqlCacheDependencyAdmin.EnableNotifications(connstr); //连接到 SQL Server 数据库并为 UserInfo 更改通知准备数据库表 dbo.Tab_user SqlCacheDependencyAdmin.EnableTableForNotifications(connstr, "dbo.Tab_user"); //制定缓存策略 SqlCacheDependency cdep = new SqlCacheDependency("UserInfo", "dbo.Tab_user"); //把查询到的数据放入缓存 Cache.Insert("UserInfo", ds, cdep); } else { ds = (DataSet)Cache["userinfo"]; } this.gv_user.DataSource = ds; this.gv_user.DataBind(); }