在SQL Server中为Webhook添加一个表触发器

8
一款第三方应用程序使用MS SQL Server作为数据存储。在第三方应用程序API中,他们忘记为事件添加Webhooks,因此我正在尝试通过在其SQL Server数据库上添加相关表触发器来添加Webhooks概念到它们的API中。
这个想法是通过表触发器捕获UPDATE事件,如果更改了特定字段,则通知一个进程(在SQL Server框之外)执行一些批量操作。
我考虑让SQL Server以某种方式调用URL(也称为“Webhook”),而不等待响应(或立即超时),最好使用T-SQL。
在SQL Server中是否有任何方法可以实现这一点(从T-SQL异步调用URL),或者与外部系统通信的唯一安全方式是从SQL Server发送电子邮件,以避免意外锁定SQL Server的风险?(我正在使用SQL Server 2012)

您可以使用 Service Broker 来通知外部某个事件。 - sepupic
谢谢,我会调查一下Service Broker功能是如何工作的。我对方法很灵活。总体而言,我担心影响底层第三方应用程序的性能(尽管在我们特定的用例中,所涉及的表每分钟只被修改3或4次,我不需要硬实时通知)。 - Pep
1个回答

6

在SQL Server中有没有办法实现这个(从T-SQL进行异步URL调用)?

没有。您必须将其写入表格或服务代理队列,并有某些异步进程从该表格或队列中处理通知。

您可以使用一个简单的表格并带有轮询进程,或者使用Service BrokerDatabase MailEvent NotificationsQuery Notifications都使用Service Broker)。

服务代理内部激活使您能够注册一个存储过程,当队列中有消息时,该存储过程将由后台进程运行。您可以通过长时间运行的任务阻止此后台进程,而不会干扰应用程序工作负载。您还可以使用外部应用程序处理排队的消息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接