其他程序往sql server数据库的表中写入数据,目前无法获取程序的接口。
表的简易结构如下:
id 事件代码 事件发生时间
在数据库的表发生变动时,一般情况是最新的事件加入表中, 我的程序想要尽早获取到这个事件,请问如何实现?
方法1、可能让sql数据库通过某个接口自动通知我的程序吗? sql server是否有这个功能?
方法2、我能想到的方法,就是在我的程序中开辟一个线程不断查询数据库,当数据库表的事件时间有更新时执行相关操作。
但是感觉这样子会对数据库造成较大的负担,而且不够实时。
请问有更好的更可行的方法吗?
SQL Server 2005中引入的 Service Broker ,用query notification 机制
service broker
触发器 + sp_oa系列存储过程 + 你自己写好的com组件
如果你用.net还可以设置基于数据库的缓存依赖,一但表中有变更,缓存失效,这时就可以去处理,而不必定时去刷数据库。
我想到的方法是利用定时器去不间断的刷新表(例如一(十)秒一次),然后比较数据时候有更新.
使用触发器,当表中的数据进行了修改后,进行通知。
再次请教如何在数据库中做标记?
我能想到的就是在另外一个表中添加或者修改一列,比如把最新的时间写入,或者设置一个标志位,我的应用程序定时查询到这个标志位是否发生变化。
等到做完事情后,程序复位标志位,并等待触发器再一次的写入标志位。。
请问是否是这样做? 或者细节上还有需要补充的地方,让我的程序更容易判断数据表发生插入更新
我们的做法是:
1、插入事件表时,同时插入到另外一个表(暂定:邮件表)
2、写一个服务(C#),定时检查邮件表中是否有邮件(未发邮件标记为0),若有则发邮件出来就可以了。
3、你接受邮件。