在更改为 Azure SQL 数据库 table 时调用外部 API
Call external API on change to Azure SQL database table
我们在 Azure SQL 数据库中有一个名为 Guest 的 table。我们还有一个活动管理工具位于提供商云上的 API 后面。
当在访客 table 中创建、更新或删除记录时,我们想调用 API 以便使用有关访客的最新信息更新活动管理工具。
我们最初的想法是将数据库触发器连接到 C# .NET Azure 函数,但是,看起来这仅在 Cosmos DB 中受支持。
我们不希望应用程序 运行 执行定期检查数据库更改并将这些更改发送到 API 的计划任务。
我们也一直在阅读有关创建 CLR 存储过程的信息,但看起来这些在 Azure SQL 数据库中不受支持。
期待听到想法和建议。
我能想出几种方法来完成这个。
[很遗憾,SQL Azure 不再支持 CLR。]
一种方法是:
- 在您的
Guest
table 上打开 Change Data Capture。
- 创建具有 timer trigger 的无服务器 Azure 函数。此函数将使用 CDC 来确定您的 table 中发生了什么变化,并相应地调用您的供应商 API。
与"an application running on a scheduled task"相比,无服务器功能相对轻量级。
对于这种情况,您也可以使用 Azure Logic Apps。
有一些预定义的触发器可以帮助触发
创建项目时
修改项目时
然后使用 Action 调用您的 API
这将是您实现用例的最简单方法。
您将必须迁移到支持 CLR 和 Broker 的 Azure SQL 托管实例。
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-managed-instance-transact-sql-information#clr
我们在 Azure SQL 数据库中有一个名为 Guest 的 table。我们还有一个活动管理工具位于提供商云上的 API 后面。
当在访客 table 中创建、更新或删除记录时,我们想调用 API 以便使用有关访客的最新信息更新活动管理工具。
我们最初的想法是将数据库触发器连接到 C# .NET Azure 函数,但是,看起来这仅在 Cosmos DB 中受支持。
我们不希望应用程序 运行 执行定期检查数据库更改并将这些更改发送到 API 的计划任务。
我们也一直在阅读有关创建 CLR 存储过程的信息,但看起来这些在 Azure SQL 数据库中不受支持。
期待听到想法和建议。
我能想出几种方法来完成这个。
[很遗憾,SQL Azure 不再支持 CLR。]
一种方法是:
- 在您的
Guest
table 上打开 Change Data Capture。 - 创建具有 timer trigger 的无服务器 Azure 函数。此函数将使用 CDC 来确定您的 table 中发生了什么变化,并相应地调用您的供应商 API。
与"an application running on a scheduled task"相比,无服务器功能相对轻量级。
对于这种情况,您也可以使用 Azure Logic Apps。
有一些预定义的触发器可以帮助触发
创建项目时
修改项目时
然后使用 Action 调用您的 API
这将是您实现用例的最简单方法。
您将必须迁移到支持 CLR 和 Broker 的 Azure SQL 托管实例。 https://docs.microsoft.com/en-us/azure/sql-database/sql-database-managed-instance-transact-sql-information#clr