如何用Logic Apps将Azure SQL新增行发送至Service Bus Queue及相关疑问
Azure SQL新增行同步至Service Bus Queue问题解答
1. 如何将“行”作为参数传入“发送消息内容”操作?
如果用Logic Apps,SQL触发器触发后,直接在「发送消息到Service Bus队列」的「消息内容」字段里,选择动态内容中的整个行对象即可。要是需要自定义格式,也可以用json()函数把行数据转成JSON字符串,比如json(triggerBody()?['InsertedRows']),直接填入消息内容框就行。
2. “获取行”操作生成的是什么类型的对象,发送至Service Bus Queue需要何种格式?
- 「获取行」操作返回的是JSON数组格式的对象集合,每个元素对应一行数据的键值对(列名映射对应字段值)。
- Service Bus Queue支持字符串、字节数组格式的消息,最常用的是JSON字符串格式。直接把获取到的行对象转成JSON字符串即可,Logic Apps里可以直接选择动态内容,或者用
string()函数转换,比如string(body('获取行'))。
3. 是否可使用Azure Function替代Logic Apps完成该操作?我未找到Azure Functions的SQL触发器。
完全可以用Azure Functions实现,目前有两种主流方式监听SQL行变更:
- SQL触发器绑定:现在已经有正式版的SQL触发器模板,创建Function时直接选择该模板,配置好SQL连接字符串、目标表名,就能监听表的INSERT/UPDATE/DELETE操作。
- CDC变更捕获:如果受环境限制,也可以开启Azure SQL的CDC(变更数据捕获),然后在Function里定时查询CDC日志,或者配合Event Grid触发,但最直接的方案还是用官方的SQL触发器绑定。
内容的提问来源于stack exchange,提问作者Lucian Pop
相关产品推荐
相关产品推荐

