【问题标题】:Adding a Table Trigger in SQL Server for a webhook在 SQL Server 中为 webhook 添加表触发器
【发布时间】:2017-07-31 15:16:45
【问题描述】:

第三方应用程序使用 MS SQL Server 作为数据存储。在第 3 方应用程序 API 中,他们忘记为事件添加 webhook,因此我试图通过在他们的 SQL Server 数据库上添加相关的表触发器来在他们的 API 中添加 webhook 的概念。

想法是使用表触发器捕获 UPDATE 事件,如果它们更改给定字段,则通知进程(在 SQL Server 框外)执行一些批处理操作。

我正在考虑让 SQL Server 以某种方式调用 URL(也称为“webhook”)而不等待响应(或立即超时),最好使用 T-SQL。

在 SQL Server 中是否有任何方法可以做到这一点(来自 T-SQL 的异步 URL 调用)或者与外部系统通信而不会意外锁定 SQL Server 风险的唯一安全方法是从 SQL Server 发送电子邮件? (我使用的是 SQL Server 2012)

【问题讨论】:

  • 你可以使用Service Broker来通知smth external
  • 谢谢,我将研究 Service Broker 功能的工作原理。我对方法很灵活。总的来说,我担心影响底层第三方应用程序的性能(尽管在我们的特定用例中,有问题的表每分钟只修改 3 或 4 次,我不需要硬实时通知)。

标签: sql-server triggers


【解决方案1】:

在 SQL Server 中有什么方法可以做到这一点(来自 T-SQL 的异步 URL 调用)

没有。您必须写入表或 Service Broker 队列,并让某些东西异步处理来自该表或队列的通知。

您可以使用带有轮询过程的简单表,或使用Service BrokerDatabase MailEvent NotificationsQuery Notifications 都使用 Service Broker)。

Service Broker Internal Activation 使您能够注册一个存储过程,只要队列中有消息,该存储过程就会由后台进程运行。您可以使用长时间运行的任务阻止此后台进程,而不会干扰应用程序工作负载。您还可以使用外部应用程序处理排队的消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2016-09-18
    • 1970-01-01
    相关资源
    最近更新 更多