SQL Server:轮询的替代方案——调用第二个后进程storedproc
本文关键字:调用 第二个 storedproc 进程 方案 Server SQL | 更新日期: 2023-09-27 18:06:34
我正在使用SQL Server 2012和。net 4.5编写一个M2M数据捕获系统,场景是:
我有一个远程数据捕获应用程序,一个web服务,一个DB。
应用程序捕获数据并调用web服务将数据上传到DB。web服务调用"insert"storedproc直接在表a中写入原始数据;然后,web服务返回一个值,告诉插入是否成功。
现在,需要在插入进程之后运行一个后进程存储进程来更新另一个表(表B)。以前我使用'job agent',但由于所需的轮询间隔更改为'小于5分钟',出于效率和实时原因,我想避免使用'polling'。
理想情况下,我希望应用程序能够调用web服务并获得返回消息/值,之后, DB触发存储过程来做后处理工作;这项工作可能需要更长的时间,所以应用程序不需要等待所有进程完成。
我可以从DB端触发后处理sp吗?因为DB知道插入何时完成,并且它保存了来自DB外部的通信。
有什么建议吗?
您可能会考虑使用trigger + Service Broker。通过这种方式,触发器将向队列发送消息。将触发服务代理来处理消息。它解耦了表A的更新和表B的更新。如果只使用触发器调用表B,它将保持表A更新,直到表B更新完成。