51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> sqlserver >> 文章正文

如何高效的知道sql server数据库的表已经更新

更新时间:2012-1-4:  来源:51代码网

其他程序往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、你接受邮件。

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |