我想了解在SQL数据库中创建记录时是否可以触发Azure函数?我知道使用逻辑应用可以实现。
ALTER DATABASE [SampleDatabase]
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON);
ALTER TABLE [dbo].[ToDo]
ENABLE CHANGE_TRACKING;
The SQL trigger binds to a IReadOnlyList<SqlChange<T>>, a list of SqlChange objects each with 2 properties:
AzFn:
using System.Collections.Generic;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.WebJobs.Extensions.Sql;
namespace AzureSQL.ToDo
{
public static class ToDoTrigger
{
[FunctionName("ToDoTrigger")]
public static void Run(
[SqlTrigger("[dbo].[ToDo]", ConnectionStringSetting = "SqlConnectionString")]
IReadOnlyList<SqlChange<ToDoItem>> changes,
ILogger logger)
{
foreach (SqlChange<ToDoItem> change in changes)
{
ToDoItem toDoItem = change.Item;
logger.LogInformation($"Change operation: {change.Operation}");
logger.LogInformation($"Id: {toDoItem.Id}, Title: {toDoItem.title}, Url: {toDoItem.url}, Completed: {toDoItem.completed}");
}
}
}
}
在GitHub存储库中提供了更多Azure SQL触发器的示例。
Automate workflows for SQL Server or Azure SQL Database by using Azure Logic Apps
中提到的方法外,还有其他可行的解决方案,即为 FOR
/AFTER
INSERT
事件创建 DML 触发器,并从 SQL 数据库向具有 HTTP 触发器的 Azure 函数发送 Web 请求。是的,Logic App有一个连接器,可以连接On-Prem和Azure SQL。当添加新行时,它将触发。
看一下这个答案
。
您可以在Azure Functions文档中找到所有支持的触发器和绑定:Azure Functions触发器和绑定概念-支持的绑定。Azure SQL不在支持触发器列表中。
摘自本文,
为了使Azure函数触发SQL更改,有两种可能的方法。
- 在Azure函数中定义自定义绑定
- 如果Azure函数端没有绑定,则可以是SQL触发器调用Azure函数HTTP触发器。
另一种情况是更改更新SQL的后端,并使其(也)将消息推送到队列中,从而触发您的函数。