c# 实时监控数据库 SqlDependency

http://blog.csdn.net/idays021/article/details/49661855

class Program
{
private static string _connStr;

static void Main(string[] args)
{
_connStr = ConfigurationManager.ConnectionStrings["plmConnectionString"].ToString();
SqlDependency.Start(_connStr);//传入连接字符串,启动基于数据库的监听
UpdateGrid();

Console.Read();
}

private static void UpdateGrid()
{
using (SqlConnection connection = new SqlConnection(_connStr))
{
//依赖是基于某一张表的,而且查询语句只能是简单查询语句,不能带top或*,同时必须指定所有者,即类似[dbo].[],如果where条件存在datetime类型,就会导致一直触发onChange事件
using (SqlCommand command = new SqlCommand("select id,machine,jobNo From [dbo].[plm_Issue]", connection))
{
command.CommandType = CommandType.Text;
connection.Open();
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);

SqlDataReader sdr = command.ExecuteReader();
Console.WriteLine();
while (sdr.Read())
{
Console.WriteLine("id:{0}\t machine:{1}\t jobNo:{2}", sdr["id"].ToString(), sdr["machine"].ToString(),

sdr["jobNo"].ToString());
}
sdr.Close();
}
}
}

private static void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
SqlDependency dependency = sender as SqlDependency;
dependency.OnChange -= dependency_OnChange;
if (e.Info != SqlNotificationInfo.Invalid)
{
UpdateGrid();//此处需重复注册<span style="font-family: Arial, Helvetica, sans-serif;">SqlDependency,每次注册只执行一次,SqlDependency.id可用用于验证注册唯一 编号
}
}
}

在数据库执行如下sql 语句

  1. ALTER DATABASE 数据库名称 SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
  2. ALTER DATABASE 数据库名称 SET ENABLE_BROKER;
时间: 2024-11-05 12:26:02

c# 实时监控数据库 SqlDependency的相关文章

实时监控数据库的思考

关于监控数据库的思考, 1.最长使用的方式是新建线程,定时查询数据库的记录,实现监控数据库的目的: 但这种方法时效率最低,消耗资源最高的方法: 2.写触发器, 这种方法对数据库的压力比较大,而且,当不同数据库之间传输数据的时候,可能会被影响,但小程序,单数据库的情况下,也是不错的选择. 但百度知道后, 触发器由于是隐藏的,无形中增加系统的复杂性,非DBA管理人员理解起来就会有困难,因为根本感觉不到它的存在. 再有,涉及到复杂的逻辑的时候,触发器的嵌套是避免不了的,如果再涉及几个存储过程,再加上事

160411、实时监控mysql数据库变化

对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数据库配置文件my.ini (一般在数据库安装目录)(D:\MYSQL) 2.在数据库的最后一行添加 log=log.txt 代码 3.重启mysql数据库 4.去数据库数据目录 我的是(D:\MYSQL\data) 你会发现多了一个log.txt文件 我的是在C:\Documents and Set

mysql数据库数据变化实时监控

对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数据库配置文件my.ini (一般在数据库安装目录)(D:\MYSQL) 2.在数据库的最后一行添加 log=log.txt 代码 3.重启mysql数据库 4.去数据库数据目录 我的是(D:\MYSQL\data) 你会发现多了一个log.txt文件 我的是在C:\Documents and Set

java利用WatchService实时监控某个目录下的文件变化并按行解析(注:附源代码)

首先说下需求:通过ftp上传约定格式的文件到服务器指定目录下,应用程序能实时监控该目录下文件变化,如果上传的文件格式符合要求,将将按照每一行读取解析再写入到数据库,解析完之后再将文件改名. 一. 一开始的思路 设置一个定时任务,每隔一分钟读取下指定目录下的文件变化,如果有满足格式的文件,就进行解析. 这种方式很繁琐,而且效率低,效率都消耗在了遍历.保存状态.对比状态上了! 而且无法利用OS的很多功能. 二. WatchService介绍 1. 该类的对象就是操作系统原生的文件系统监控器!我们都知

CentOS下使用MyTop实时监控MySQL

CentOS下使用MyTop实时监控MySQL MyTop的项目页面为:http://jeremy.zawodny.com/mysql/mytop/ MyTop安装 $ yum -y install mytop #epel源 MyTop命令参数 $ man mytop -u / --user <USERNAME>:指定 username,预设是 root -p / --pass / --password <PASSWORD>:指定password,预设是none -h / --ho

如何做实时监控?—— 参考 Spring Boot 实现(转)

转自:http://blog.csdn.net/xiaoyu411502/article/details/48129057 随着 微服务 的流行,相比较以前一个大型应用程序搞定所有需求,我们现在更倾向于把大型应用程序切分成多个微服务,服务之间通过 RPC 调用.微服务架构的好处非常多,例如稳定的服务变化较少,不会被非稳定服务所影响:不同的服务更方便交给不同的人管理:发布.扩容等操作也更加有针对性.不过这也不是没有代价的,额外的成本最主要的可能就是运维成本. 我们维护的一个产品,由 7 个微服务构

CentOS7.5 安装配置天兔(lepus)监控数据库(一)

CentOS7.5 安装配置天兔(lepus)监控数据库(一) 标签(空格分隔): 运维系列 一: 天兔(lepus) 监控介绍 二: 天兔(lepus) 安装环境配置 三: 天兔(lepus)部署 一: 天兔(lepus) 监控介绍 Lepus(天兔)数据库企业监控系统是一套由专业DBA个人(目前就职于某互联网公司),针对互联网企业开发的一款专业.强大的企业数据库监控管理系统,企业通过Lepus可以对数据库的实时健康和各种性能指标进行全方位的监控.目前已经支持MySQL.Oracle.Mong

Lepus(天兔)监控数据库

该博文是参考Lepus官方文档撰写的,官方文档蛮详细的,但是有些下载链接失效(这个开源产品的维护者比较忙,所以更新不太及时),也为了以自己的写作风格记录下lepus的使用方法,所以这篇博文就出现了. Lepus系统特性如下: 无需Agent,远程监视云中数据库 WEB直观的管理和监视数据库 实时MySQL健康监视和告警 实时MySQL复制监视和告警 实时MySQL资源监视和分析 实时MySQL缓存等性能监视 实时InnoDB IO性能监控 MySQL表空间增长趋势分析 可视化MySQL慢查询在线

用java写一个远程视频监控系统,实时监控(类似直播)我想用RPT协议,不知道怎么把RPT协议集成到项目中

我最近在用java写一个远程视频监控系统,实时监控(类似直播)我想用RPT协议,不知道怎么把RPT协议集成到项目中,第一次写项目,写过这类项目的多多提意见,哪方面的意见都行,有代码或者demo的求赏给我,谢谢