2017-07-31 42 views
1

第三方應用程序使用MS SQL Server作爲數據存儲。在第三方應用程序API中,他們忘記爲事件添加webhook,所以我試圖通過在其SQL Server數據庫中添加相關表觸發器來將webhooks的概念添加到其API中。在SQL Server中爲webhook添加表觸發器

這個想法是捕獲具有表觸發器的UPDATE事件,如果它們更改給定的字段,則通知進程(在SQL Server框外)執行一些批處理操作。

我一直在想讓SQL Server以某種方式調用一個URL(也就是「webhook」)而不用等待響應(或立即超時),最好是使用T-SQL。

有什麼辦法可以做到這一點在SQL Server(從T-SQL的異步URL調用)或唯一安全的方式與外部系統通信,而不會意外地鎖定SQL Server的風險是從SQL Server發送電子郵件? (我使用SQL Server 2012)

+0

您可以使用Service Broker通知外部的客戶 – sepupic

+0

謝謝,我將研究Service Broker功能的工作原理。我對這種方法很靈活。總的來說,我擔心影響潛在的第三方應用程序的性能(儘管在我們的特定用例中,所討論的表格每分鐘只修改3次或4次,並且我不需要實時通知)。 – Pep

回答

2

有沒有辦法做到這一點在SQL Server(從T-SQL asyncronous URL調用)

號必須寫一個表或服務代理隊列,並有異步處理來自該表或隊列的通知。

您可以爲輪詢過程使用簡單表格,或使用Service BrokerDatabase MailEvent NotificationsQuery Notifications全部使用Service Broker)。

Service Broker Internal Activation使您能夠註冊一個存儲過程,只要隊列中有消息,該存儲過程將由後臺進程運行。您可以使用長時間運行的任務來阻止此後臺進程,而不會干擾應用程序工作負載。您也可以使用外部應用程序處理排隊的消息。