Azure SQL 数据库中的异步触发器

Posted

技术标签:

【中文标题】Azure SQL 数据库中的异步触发器【英文标题】:Asynchronous Triggers in Azure SQL Database 【发布时间】:2016-12-22 14:50:26 【问题描述】:

我希望在 Azure SQL 数据库中实现一些“异步触发器”。有this other question 提出了同样的问题,其需求与我的需求几乎相同,但针对的是 SQL Server 2005/2008。答案是使用 Service Broker。如果 Azure SQL 数据库支持它,这是一个很好的答案,可以完美地满足我的需求,但事实并非如此。

我的具体需求是我们有一组相当少的输入由用户选择和存储。其中一些输入是特定算法的标识和一些聚合级别的数据,所有这些都在单个表的单个记录中。保存后,我们需要一个触发器来执行这些选定的算法并处理聚合级数据,以将其分解为数万条记录到几个不同的表中。这需要 2-8 秒来处理,具体取决于算法。 (我确信我可以进一步优化它,但我认为我不能仅仅因为必须内置的逻辑而将其速度提高到 2-5 秒。)

我对在 Azure 中的 VM 中安装 SQL Server 不感兴趣 - 我特别想继续使用 Azure SQL 数据库,原因有很多,我不会在这篇文章中讨论。

所以我的问题是:仅在 Azure SQL 数据库中是否有一种好的/明显的方法可以做到这一点?我想不出一个。我能看到的最明显的选项要么不在 Azure SQL 数据库中,要么不是初学者:

    使用真正的触发器而不是异步触发器,但这是一个问题,因为这些触发器需要很多秒才能处理,因为它会根据存储的输入处理数字。 在数据库中使用穷人的排队系统(即,将新表视为队列并将记录作为消息插入其中)并从外部/外部源(函数或 Web 作业或其他东西)轮询该表。由于增加了复杂性和工作量,我真的很想避免这种情况。但坦率地说,如果我不能从这里的聪明人那里得到更好的想法,这就是我所倾向于的!

感谢您的帮助!


(我在此处而不是在 DBA.StackExchange 上发布此内容,因为这更多是架构问题而不是数据库问题。您可能不同意,但因为我目前的最佳选择涉及非数据库开发和上述问题我对我来说几乎完美的引用也位于此处,我选择在这里而不是那里发布。)

【问题讨论】:

azure.microsoft.com/en-us/blog/… 【参考方案1】:

据我所知,在 Azure SQL 数据库中直接是不可能的,但是有几个选择:

正如评论中提到的@gotqn,您可以使用Azure Automation/Runbooks; applied to Azure SQL specifically。

您也可以查看database jobs。

【讨论】:

【参考方案2】:

您可以使用 LogicApp。它有一个实现异步触发器的 SQL 连接器......

https://azure.microsoft.com/en-us/services/logic-apps/

【讨论】:

以上是关于Azure SQL 数据库中的异步触发器的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL 客户端将时间触发的 Azure 函数与数据库连接

使用 DBContext 将 SQL Server 数据库与时间触发的 Azure 函数连接起来

如何基于 Azure 数据工厂中创建的 Blob 执行触发器?

如何:将实际执行方法从“行”更改为“批处理”-Azure SQL Server

Azure 函数 Http 触发器验证正文数据

Microsoft Azure 的1024种玩法九. Microsoft Azure云端轻松构建部署PostgreSQL数据库