Sqlserver数据库通知应用程序

Sqlserver数据库通知应用程序,第1张

概述现在有这么个需求,说是数据库的某些数据一旦有变化,立刻通知应用程序(Java Web项目) 应用程序即使调整信息以展示到大屏幕上. 解决办法大概有这么两个: 1.   因为项目是用的java , 可以弄个定时(java的定时或者spring的定时都可以) , 达到长时间轮训数据库, 一旦数据变化就可以更新大屏幕信息. 检测数据是否变化可以在表上加触发器,一旦修改或删除 新增等, 则记录一个最新的日

现在有这么个需求,说是数据库的某些数据一旦有变化,立刻通知应用程序(Java Web项目) 应用程序即使调整信息以展示到大屏幕上.

解决办法大概有这么两个:

1.   因为项目是用的java,可以弄个定时(java的定时或者spring的定时都可以),达到长时间轮训数据库,一旦数据变化就可以更新大屏幕信息. 检测数据是否变化可以在表上加触发器,一旦修改或删除 新增等,则记录一个最新的日志,java端来读这个日志就可以了.

      但是这种的不足在于应用程序每一秒或两秒都要与数据库进行I/O,在大屏幕个数多的情况下(N多种不同的业务数据),性能确实不好.

2.  反过来,当数据库表数据有变化时,让数据库通知应用程序

      实现:  在表上加触发器,一旦数据变化,触发器调用存储,存储来通知应用程序.

      因为我们用的是sqlserver, 这个就是sqlserver来发送一个http请求,同时应用程序,应用程序只要接到这个请求,随便你想干点什么!

---通过sql server 2008 调用应用程序create PROCEDURE  refreshAppEhcache(@input varchar(2000))	ASBEGINdeclare @ServiceUrl as varchar(1000) --通过http协议调用的接口地址' set @ServiceUrl = 'http://localhost:8080/yi/Jsp/todoTrigger.action?interfacetype=' + @inputDeclare @Object as IntDeclare @ResponseText as Varchar(8000)Exec sp_OACreate 'MSXML2.XMLhttp',@Object OUT;Exec sp_OAMethod @Object,'open',NulL,'get',@ServiceUrl,'false'Exec sp_OAMethod @Object,'send'Exec sp_OAMethod @Object,'responseText',@ResponseText OUTPUTSelect @ResponseText     Exec sp_OADestroy @ObjectEND-----在接口日志表上新增触发器动态监控接口日志的同步情况create TRIGGER log_trigger ON log   AFTER INSERTAS BEGIN	declare @ID Varchar(32)	set @ID=(select ID from inserted)	declare @content Varchar(64)	set @content=(select content from inserted)	insert into log_back (ID,code) values (@ID,@content);	EXEC refreshAppEhcache @content;END

Oracle和MysqL怎么办呢?

        oracle我查了查首先基本一样 , 不过oracle利用webservices来实现的,应用程序需要接受到一个soap请求.

        MysqL用一个udf-http 的东东来发送http post请求,不过网上大多数都是在linux下实现的,windows暂时还没找到解决办法,我想肯定是有。

总结

以上是内存溢出为你收集整理的Sqlserver数据库通知应用程序全部内容,希望文章能够帮你解决Sqlserver数据库通知应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1170638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存