sqlDependency监控数据库数据变化,自动通知

来源:互联网 发布:淘宝卖家签收拒绝退款 编辑:程序博客网 时间:2024/05/22 06:30
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Configuration;using System.Data.SqlClient;using System.Data;namespace Sample2{    class Program    {        private static string _connStr;        static void Main(string[] args)        {            _connStr = "Data Source=localhost;User Id=sa;Password=xxx;Database=xxx;Pooling=true;Max Pool Size=600;Min Pool Size=0;";            SqlDependency.Start(_connStr);//传入连接字符串,启动基于数据库的监听            UpdateGrid();            Console.Read();        }        private static void UpdateGrid()        {            using (SqlConnection connection = new SqlConnection(_connStr))            {                connection.Open();                //依赖是基于某一张表的,而且查询语句只能是简单查询语句,不能带top或*,同时必须指定所有者,即类似[dbo].[]                using (SqlCommand command = new SqlCommand("select D_Id,D_Name,D_Password,D_Else,D_Amount From [dbo].[TestTable]", connection))                {                                        command.CommandType = CommandType.Text;                    SqlDependency dependency = new SqlDependency(command);                    dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);                    using (SqlDataReader sdr = command.ExecuteReader())                    {                        Console.WriteLine();                        while (sdr.Read())                        {                            Console.WriteLine("{0}---{1}---{2}---{3}---{4}", sdr["D_Id"].ToString(),                                sdr["D_Name"].ToString(), sdr["D_Password"].ToString(), sdr["D_Else"].ToString(), sdr["D_Amount"].ToString());                        }                        sdr.Close();                    }                }            }        }        private static void dependency_OnChange(object sender, SqlNotificationEventArgs e)        {            UpdateGrid();        }    }}
use masterALTER DATABASE WINE_CLOUD set ENABLE_BROKER/*想启用Broker时,出现以下错误:无法启用数据库 "db2" 中的 Service Broker,因为已存在启用的具有相同 ID 的 Service Broker。解决办法:use masteralter database db2 set NEW_BROKER然后再运行use masterALTER DATABASE db2 set ENABLE_BROKER*/--验证是否能启用goSelect DATABASEPROPERTYEX('WINE_CLOUD','IsBrokerEnabled')--修改数据库使用者(至关重要)exec sp_changedbowner @loginame = 'sa'

0 0
原创粉丝点击