监视数据库表变化用什么方法好?(SqlDependency )
c#吧
全部回复
仅看楼主
level 1
bxs82 楼主
我目前只需要监视表有新增记录,然后做一些操作。数据库SQL Express 2008
首先不想用触发器,打算在C#程序里做。
想到比较笨的方法是用timer实时扫描数据库表的主键与现在的进行比对,但是感觉这样耗费资源比较大,如果数据库表记录比较多。
网上搜索发现有个SqlDependency ,用了一下发现他触发的事件比较频繁,不知道为什么,可能是我用的不对,调试发信息表并没有变化也在不停的触发那个事件。
有没有官方一点的这个标准的使用方法,或者其他什么好的方法?
2019年08月05日 00点08分 1
level 12
是的,SqlDependency
很久之前我使用过。
那个时候限制比较多,不能使用*号,不能使用复杂函数。
不知道现在情况怎么样了。
使用起来比较简单。
我记得首先数据库开启SqlDependency
然后程序里只要实现它指定的一个委托方法就好了。
2019年08月06日 01点08分 4
是的,我用了 还不错,就是简单应用,监视的查询语句不能用*号,不能用top什么很多关键字。只是改变的时候不知道如何定位具体改变的行。
2019年08月08日 00点08分
level 13
数据量不太多也无所谓,10万行以下,你就直接去读数据库,读过来比较下。控制下数据也就是1秒左右。
如果像是ERP数据有秒级的创建时间,修改时间,可以直接查最大值,判断是否有更改。
我用C#同步数据库,一般10分钟频率,
1万行以下读取源数据库,直接清空目标数据库,bulk过去,1秒以内完成。
数据量大了才考虑程序判断差异,部分更新。
2019年08月08日 08点08分 5
数据量还可以吧,目前业务只要求检测新增就可以,这样我判断最大ID主键如果变化了就是新增了,如果是修改就判断不出来了。
2019年08月16日 01点08分
@bxs82 你这个根本没有用C#程序处理数据,只是SQL查询。
2019年08月19日 01点08分
@bxs82 判断修改,可以将数据读过来和本地保存的历史数据遍历比较。C#效率高,速度很快的。如果改变了,更新本地历史数据。然后等下次比较。
2019年08月19日 01点08分
@aaaagq 怎么才算 C#程序处理数据 ?有没有相关博客例子
2019年08月23日 00点08分
level 6
都是大佬,请收下我的膝盖
2019年08月21日 02点08分 6
level 8
sqlserver吗?试试cdc
2019年08月23日 00点08分 8
是SQL Server 2008 Express。我看了一下CDC是捕获日志奥,没用过,我去研究研究,谢谢了
2019年08月27日 00点08分
Express版本实例不支持CDC,只有标准版、专业版和企业版支持。另外我发现就是系统多了一个表去记录增加操作的,那么我还是需要实时的扫描这个新的表是不,和我实时扫描主表的方式有点相似了吧?!
2019年08月27日 01点08分
level 1
2023年11月27日 07点11分 9
1