asp.net mysql sqldependency in_c# 实时监控数据库 SqlDependency

本文介绍了一种使用SqlDependency实时监控数据库变更的方法,并提供了基于C#的示例代码。此外还探讨了不同技术栈下的数据库变更监控方案,包括Node.js、Java及MySQL的自带功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();//此处需重复注册SqlDependency,每次注册只执行一次,SqlDependency.id可用用于验证注册唯一 编号

}

}

}

在数据库执行如下sql 语句

ALTER DATABASE 数据库名称 SET NEW_BROKER WITH ROLLBACK IMMEDIATE;

ALTER DATABASE 数据库名称 SET ENABLE_BROKER;

Node.js 数据库实时监控库 node-dbmon

node-dbmon 是一个 Node.js 数据库实时监控库,如果你希望在数据库表数据更改后,或者是文件修改后能更新 GUI,那么这个库正好适合你. https://github.com/strap ...

实时监控mysql数据库变化

对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数 ...

java实时监控mysql数据库变化

对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数 ...

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

对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数 ...

转: 透过CAT,来看分布式实时监控系统的设计与实现

评注: 开源的分布式监控系统 转:http://www.infoq.com/cn/articles/distributed-real-time-monitoring-and-control-syste ...

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

随着 微服务 的流行,相比较以前一个大型应用程序搞定所有需求,我们现在更倾向于把大型应用程序切分成多个微服务,服务之间通过 RPC 调用.微服务架构的好处非常多,例如稳定的服务变化较少,不会被非稳定服 ...

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

首先说下需求:通过ftp上传约定格式的文件到服务器指定目录下,应用程序能实时监控该目录下文件变化,如果上传的文件格式符合要求,将将按照每一行读取解析再写入到数据库,解析完之后再将文件改名. 一. 一开 ...

ntopng网络流量实时监控

ntopng is the next generation version of the original ntop, a network traffic probe that monitors ne ...

Python中Celery 的基本用法以及Django 结合 Celery 的使用和实时监控进程

celery是什么 1 celery是一个简单,灵活且可靠的,处理大量消息的分布式系统 2 专注于实时处理的异步任务队列 3 同时也支持任务调度 执行流程 Celery 基本使用 tasks.py i ...

随机推荐

ubuntu 下安装极点五笔

安装完Ubuntu后先更新软件,我的Ubuntu的键盘输入方式系统是ibus 在终端中执行如下操作 sudo wget http://www.unicom-china.com/download/vis ...

网页布局:float与position的区别

网页开发中布局是一个永恒的话题.巧妙的布局会让网页具有良好的适应性和扩展性.css的布局主要涉及两个属性——position和float.它们俩看上去很容易被弄混,可是仔细分析一下,它们的区别还是很明 ...

***总结:在linux下连接redis并进行命令行操作(设置redis密码)

[root@iZ254lfyd6nZ ~]# cd / [root@iZ254lfyd6nZ /]# ls bin boot dev etc home lib lib64 lost+found med ...

组件_ UIToolbar

组件_ UIToolbar  /** 1. 顶部toolbar 2. TextField可以以UIBarButtonItem的自定义视图的方式加入toolbar 3. 三个按钮 4. 将UIBarBu ...

vue打包后,接口请求404的完美解决方案

在开发环境中,和后台对接为了解决跨域问题,使用了代理,也就是vue的proxyTable,但是打包放到生产环境中去时,接口请求不到,404,原因是开发环境的代理并不能用到生产环境,但是直接在请求接口是 ...

java打包成window service服务[转]

1 解释 java project  我说的是main方法作为程序入口的java工程,有别于 web project. 这样的工程 一般都是web project的附属扫描程序或一些独立的执行程序,如 ...

jar下载地址

java开发难免需要下载额外的jar,推荐一个地址 http://www.java2s.com/Code/Jar/CatalogJar.htm

一个线程可以拿到多个锁标记,一个对象最多只能将monitor给一个线程

当用Synchronized修饰某个方法的时候,表示该方法都对当前对象加锁. 给方法加Synchronized和用Synchronized修饰对象的效果是一致的. 一个线程可以拿到多个锁标记,一个对象 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值